web-dev-qa-db-ja.com

Linuxは、フルでないUSBフラッシュドライブにデータをコピーしているときに「デバイスに空き容量がありません」を返します

ファイルをUSBフラッシュドライブにコピーしようとしています。ドライブには書き込み禁止スイッチがありません。

dfは次のようになります。

$ df -h .
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde1       1.9G  622M  1.3G  33% /media/lindenb/803C-078D

df -i私に奇妙な出力を生成します(どこでも0)

$ df -i .
Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/sde1           0     0     0     - /media/lindenb/803C-078D

ドライブ上のファイルの数:

$ find . |wc -l
170

しかし、ファイルをコピーしようとすると、次のようになります。

$ mv ~/file.txt ./
mv: cannot create regular file ‘./file.txt’: No space left on device

どうすればこれを修正できますか?

2
Pierre

FAT16ファイルシステムのルートディレクトリには、限られた数のファイルエントリしか保存できません。

  • フラッシュドライブのサイズは2GBです。これは、FAT16でサポートされているファイルシステムの最大サイズです。そのため、工場出荷時にFAT16ファイルシステムでフォーマットされている可能性があります。

  • FAT16ファイルシステムの技術的な制限により、ルートディレクトリに保存できるファイルエントリの数は限られています。この制限は、ファイルシステムがフォーマットされるときに設定されます( ソース )。ディレクトリエントリ( 長いファイル名 情報を含む場合があります)が、ディレクトリの内容を含まない場合、この制限にカウントされます。

  • この問題を解決するには、ファイルシステムをFAT32に変換します。 Linuxでは、すべてのファイルを一時的な場所に移動し、ドライブをアンマウントし、mkfs.vfat -F 32 /dev/sde1を使用してFAT32に再フォーマットし、ドライブをマウントしてファイルを元に戻すのが最適な場合があります。

Error message generated by Windows 8 for a full root directory on a FAT16 volume

5
bwDraco

これを入手したとき、私が完全に理解していなかった理由で、USBデバイスがそれ自体を読み取り専用モードにするか、OSによって読み取り専用としてマークされていることがわかりました。それを修正するために私が見つけた唯一の方法は、フラッシュデバイス上の情報をバックアップし、そのパーティションテーブル、パーティション、およびファイルシステムを再作成することでした。 Linuxでは、fdiskまたはgpartedやKDE Partition Managerなどのパーティションエディターを使用してこれを実行します(前回実行する必要があったとき、fdiskとgpartedは、再帰的なパーティションテーブルエントリのためにそれに触れませんでした。実行する前に、KDE ​​Partition Managerでプロセスを2回実行します)。

0
Zeiss Ikon