我使用的是 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:我尝试了其他一些事情来回应阿文图林的评论。我拍了一张新照片,然后尝试了一下,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)
尽管没有错误,我仍然无法删除文件并得到相同的旧“只读文件系统”错误。
答案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 不是日志文件系统,因此,如果未正确卸载,则对损坏非常敏感。如果可能,请尽量避免在随身携带的设备上使用它。
答案2
rm: cannot remove '/XXX/.Trash-1000/files/XXX.rtf': Read-only file system
几个小时前,在 USB 记忆棒上,我遇到了与上图相同的错误。通过谷歌搜索,我找到了这个网页。我尝试了建议的方法但没有效果。然后我在 VirtualBox 中启动了 Windows。 Windows 成功删除了“.Trash-1000“文件夹及其中的所有内容。
答案3
实际上hdparm -r0 /dev/sda1
(根据需要修改您的设备路径),然后弹出并重新插入卡对我有用。简单地用mount
命令重新安装并没有。
答案4
我有同样的问题。这对我有用:
将 SD 卡放入 USB 读卡器中
安装它
转到终端中的文件夹
sudo rm -Rf .Trash-1000/