無法從 SD 卡中刪除,“只讀文件系統”
我正在使用 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 完成了它。它似乎主要是用損壞的使用者名重命名文件,並且在我殺死它之前重命名了近 18000 個文件(我之前肯定從未拍過那麼多照片……)。然後我嘗試
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)
儘管沒有錯誤,但我仍然無法刪除文件並獲得相同的舊“只讀文件系統”錯誤。
您的文件系統似乎已損壞。如果你不能讓 fsck 執行到最後,我建議用
mkfs.vfat
. 但是為了避免以後損壞,我建議您先檢查您的 SD 卡badblocks
(您可以使用破壞性-w
選項,但之後您需要重新創建分區表 -cfdisk
例如使用 )。然後,如果您有任何壞塊,您可以將它們傳遞給 mkfs 命令,如下所示:badblocks -w -o ~/badblocksList /dev/sda mkfs.vfat -l ~/badblocksList /dev/sda
注意:或者,您可以
mkfs.vfat -c
在格式化時使用執行簡單的壞塊檢查。另請注意,FAT 不是日誌文件系統,因此,如果未正確解除安裝,對損壞非常敏感。如果可能,請盡量避免在您隨身攜帶的設備上使用它。