我正在使用 Ubuntu 14.04。
\n\n我有一张用于相机的 SD 卡,我正在尝试从中删除照片。我能够将它们移至垃圾箱,但是当我尝试从垃圾箱中删除任何文件时,我得到Failed to delete the item from the trash.
我可以导航到.Trash-1000/files设备上的目录,但是当我尝试访问sudo rm这些文件时,我得到了rm: cannot remove \xe2\x80\x98IMG_1483.JPG\xe2\x80\x99: 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)\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试使用重新安装设备sudo mount /dev/sdb1 /media/zack/SD -o rw,dmask=0000,并在尝试删除文件时遇到相同的错误。
最后,我检查了卡本身的开关并确认它处于解锁位置。我尝试将其切换为锁定状态,以防万一它是一张愚蠢的卡,而且我也无法将其删除。
\n\n这里发生了什么?我怎样才能摆脱这些文件?
\n\n更新 1:我尝试了一些其他的事情来回应 aventurin\ 的评论。我拍了一张新照片,然后尝试了一下sudo rm,结果成功了。当我返回.Trash-1000/files并再次尝试时,我能够删除一些文件,但不能删除其他文件:
$ ls\n100___12\n101___01\n102___02 # directories\n103___03\n...\nIMG_1365.JPG\nIMG_1374.JPG\nIMG_1375.JPG\nIMG_1380.JPG\n...\n\n$ sudo rm -rvf *.JPG\nremoved \xe2\x80\x98IMG_1365.JPG\xe2\x80\x99\nremoved \xe2\x80\x98IMG_1374.JPG\xe2\x80\x99\nremoved \xe2\x80\x98IMG_1375.JPG\xe2\x80\x99\nrm: cannot remove \xe2\x80\x98IMG_1380.JPG\xe2\x80\x99: Read-only file system\nrm: cannot remove \xe2\x80\x98IMG_1381.JPG\xe2\x80\x99: Read-only file system\nrm: cannot remove \xe2\x80\x98IMG_1383.JPG\xe2\x80\x99: Read-only file system\n...\nRun Code Online (Sandbox Code Playgroud)\n\n...等等。我做了一个ll正确的操作,所有 .JPG 文件的权限看起来完全相同。
更新2:
\n\n$ dmesg | grep sdb1\n[ 714.950034] FAT-fs (sdb1): error, invalid access to FAT (entry 0x6ce0c8c0)\n... # a bunch more of those\n[ 2192.017345] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.\n[ 2192.663466] sdb1: rw=0, want=105540772768, limit=62325760\n[ 2192.663470] sdb1: rw=0, want=105540772744, limit=62325760\n[ 2192.663499] FAT-fs (sdb1): error, invalid access to FAT (entry 0xad23600b)\n[ 2192.663501] FAT-fs (sdb1): Filesystem has been set read-only\n[ 2192.663601] FAT-fs (sdb1): error, invalid access to FAT (entry 0x58f3a807)\n[ 2271.537913] sdb: sdb1\n[ 2273.782060] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.\n[ 2407.374492] FAT-fs (sdb1): error, fat_free_clusters: deleting FAT entry beyond EOF\n[ 2407.374496] FAT-fs (sdb1): Filesystem has been set read-only\nRun Code Online (Sandbox Code Playgroud)\n\n我试过sudo fsck /dev/sdb1,发现了很多错误:
0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.\n1) Remove dirty bit\n2) No action\n? 1\n...\n/.Trash-1000/files/IMG_1483.JPG and\n/.Trash-1000/files/117___09/IMG_1737.JPG\n share clusters.\n1) Truncate first to 5439488 bytes\n2) Truncate second to 0 bytes\n? 1\nRun Code Online (Sandbox Code Playgroud)\n\n我告诉它要修复所有问题,但是当我再次运行它时,它们都会再次出现。
\n\n更新3:
\n\n我卸载了卡,然后跑了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\nmount: you didn\'t specify a filesystem type for /dev/sdb1\n I will try type vfat\n/dev/sdb1 on /media/zack/SD type vfat (rw)\nRun Code Online (Sandbox Code Playgroud)\n\n尽管没有错误,我仍然无法删除文件并得到相同的旧“只读文件系统”错误。
\n您的文件系统似乎已损坏。如果您不能让 fsck 运行到最后,我建议使用 重新格式化该卡mkfs.vfat。但为了避免以后损坏,我建议您首先检查您的 SD 卡badblocks(您可以使用破坏性-w选项,但之后需要重新创建分区表 -cfdisk例如,使用 )。然后,如果有任何坏块,可以将它们传递给 mkfs 命令,如下所示:
badblocks -w -o ~/badblocksList /dev/sda
mkfs.vfat -l ~/badblocksList /dev/sda
Run Code Online (Sandbox Code Playgroud)
注意:或者,您可以mkfs.vfat -c在格式化时执行简单的坏块检查。另请注意,FAT 不是日志文件系统,因此,如果未正确卸载,则对损坏非常敏感。如果可能,请尽量避免在随身携带的设备上使用它。
| 归档时间: |
|
| 查看次数: |
14307 次 |
| 最近记录: |