Ubuntu 14.04を使用しています。
カメラ用のSDカードがあり、そこから写真を削除しようとしています。そのファイルをごみ箱に移動できますが、ごみ箱からファイルを削除しようとするとFailed to delete the item from the trash
。
.Trash-1000/files
デバイスのディレクトリに移動できますが、sudo rm
ファイルにアクセスしようとするとrm: cannot remove ‘IMG_1483.JPG’: Read-only file system
。
mount
私にこれを与えた:
/dev/sdb1 on /media/zack/6562-61611 type vfat (ro,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
デバイスを再インストールしてみましたが、sudo mount /dev/sdb1 /media/zack/SD -o rw,dmask=0000
ファイルを削除しようとしても同じエラーが発生しました。
最後に、カード自体のスイッチを確認し、ロック解除位置にあることを確認しました。愚かなカードの場合に備えてロックに切り替えてみましたが削除できませんでした。
ここで何が起こっているのでしょうか?これらのファイルをどのように削除できますか?
アップデート1:私はAventurinのコメントに答えていくつかの他のことを試しました。新しい写真を撮って試してみましたが、sudo rm
効果がありました。戻って.Trash-1000/files
再試行したところ、一部のファイルは削除できましたが、他のファイルは削除できませんでした。
$ ls
100___12
101___01
102___02 # directories
103___03
...
IMG_1365.JPG
IMG_1374.JPG
IMG_1375.JPG
IMG_1380.JPG
...
$ sudo rm -rvf *.JPG
removed ‘IMG_1365.JPG’
removed ‘IMG_1374.JPG’
removed ‘IMG_1375.JPG’
rm: cannot remove ‘IMG_1380.JPG’: Read-only file system
rm: cannot remove ‘IMG_1381.JPG’: Read-only file system
rm: cannot remove ‘IMG_1383.JPG’: Read-only file system
...
...など。ファイルを削除する前にll
正しいことをして、すべての.JPGファイルに対する権限はまったく同じように見えました。
アップデート2:
$ dmesg | grep sdb1
[ 714.950034] FAT-fs (sdb1): error, invalid access to FAT (entry 0x6ce0c8c0)
... # a bunch more of those
[ 2192.017345] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 2192.663466] sdb1: rw=0, want=105540772768, limit=62325760
[ 2192.663470] sdb1: rw=0, want=105540772744, limit=62325760
[ 2192.663499] FAT-fs (sdb1): error, invalid access to FAT (entry 0xad23600b)
[ 2192.663501] FAT-fs (sdb1): Filesystem has been set read-only
[ 2192.663601] FAT-fs (sdb1): error, invalid access to FAT (entry 0x58f3a807)
[ 2271.537913] sdb: sdb1
[ 2273.782060] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
[ 2407.374492] FAT-fs (sdb1): error, fat_free_clusters: deleting FAT entry beyond EOF
[ 2407.374496] FAT-fs (sdb1): Filesystem has been set read-only
試してみましたが、sudo fsck /dev/sdb1
多くのエラーが見つかりました。
0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action
? 1
...
/.Trash-1000/files/IMG_1483.JPG and
/.Trash-1000/files/117___09/IMG_1737.JPG
share clusters.
1) Truncate first to 5439488 bytes
2) Truncate second to 0 bytes
? 1
すべての問題を解決するように指示しましたが、もう一度実行するとすべてが再び表示されます。
アップデート3:
私はカードを取り外して走ったsudo fsck /dev/sdb1 -a
。 6時間ほど実行しましたが、まだ終わっていないので、いよいよCtrl-Cを押して仕上げました。ほとんどの場合、マングリンユーザー名にファイル名を変更するようで、ほぼ18,000個のファイルを殺す前に名前を変更しました。 (私は以前これほど多くの写真を撮ったことがありませんでした...)
その後、次の出力を取得しようとしますsudo mount /dev/sdb1 /media/zack/SD -v -o rw
。
$ sudo mount /dev/sdb1 /media/zack/SD -v -o rw
mount: you didn't specify a filesystem type for /dev/sdb1
I will try type vfat
/dev/sdb1 on /media/zack/SD type vfat (rw)
エラーがなくてもファイルを削除できず、以前と同じ「読み取り専用ファイルシステム」エラーが発生します。
ベストアンサー1
ファイルシステムが破損しているようです。 fsckを最後まで実行できない場合は、カードを再フォーマットすることをお勧めしますmkfs.vfat
。ただし、後で損傷を防ぐには、badblocks
まずSDカードを確認することをお勧めします(破壊-w
オプションを使用できますが、その後、パーティションテーブルを再作成する必要があります。cfdisk
たとえば、使用)。その後、不良ブロックがある場合は、次のようにmkfsコマンドに渡すことができます。
badblocks -w -o ~/badblocksList /dev/sda
mkfs.vfat -l ~/badblocksList /dev/sda
注:またはフォーマットmkfs.vfat -c
中に単純な不良ブロックチェックを実行することもできます。また、FATはジャーナリングファイルシステムではないため、適切にアンマウントしないと破損しやすいです。可能であれば、持ち運び機器で使用しないでください。