openSUSE 无法删除空目录

sudo rm -rf 为什么无法删除移动硬盘文件,硬盘无加密。

htsg@localhost:/run/media/htsg/885603B85603A5D2/Linux/openSUSE> sudo rm -rf opt/
[sudo] root 的密码:
rm: 无法删除’opt/code/resources/app/extensions/ms-vscode.js-debug/resources/readme’: 目录非空
rm: 无法删除’opt/code/resources/app/extensions/ms-vscode.js-debug/src/ui’: 目录非空
rm: 无法删除’opt/code/resources/app/extensions/theme-defaults/themes’: 目录非空
rm: 无法删除’opt/java/jdk-8/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.feature_3.9.0.v20140827-1444’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/device-art-resources/nexus_7_2013’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/activities/GoogleMapsWearActivity’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/fragments/ListFragment/root/src/app_package’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/gradle-projects’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/other/AppWidget/thumbs’: 目录非空
rm: 无法删除’opt/node/lib/node_modules1/npm/docs/src’: 目录非空
rm: 无法删除’opt/node/lib/node_modules1/npm/node_modules/are-we-there-yet’: 目录非空

实际上这些目录为空,权限也都正常。求解决方法,只能在 Windows 上删除吗?

加 v 选项看看输出试试,可能存在阻挡删除的隐藏文件吧

1赞

试过了,不行。有点郁闷,竟然还有 sudo rm -rf 删不掉的文件。

你看看你的挂载参数是不是只读的
, 或者默认的 ntfs 驱动只能读, 不能写之类的, 得用 ntfs-3g

1赞

应该不是只读的,因为除该文件夹外该硬盘其余的文件夹都能正常操作。不过可以尝试下 ntfs-3g。

ls -a 看一下隐藏文件是不是有诡异的权限之类的?

htsg@localhost:/run/media/htsg/885603B85603A5D2/Linux/openSUSE> la -al opt/
总用量 28
drwxrwxrwx 1 htsg users 4096 10 月 5 22:27 .
drwxrwxrwx 1 htsg users 12288 10 月 7 19:27 …
drwxrwxrwx 1 htsg users 4096 10 月 5 22:27 code
drwxrwxrwx 1 htsg users 4096 10 月 5 22:22 java
drwxrwxrwx 1 htsg users 0 9 月 30 10:47 jetbrains
drwxrwxrwx 1 htsg users 4096 10 月 5 22:05 node
htsg@localhost:/run/media/htsg/885603B85603A5D2/Linux/openSUSE> rm -rf opt/
rm: 无法删除’opt/code/resources/app/extensions/ms-vscode.js-debug/resources/readme’: 目录非空
rm: 无法删除’opt/code/resources/app/extensions/ms-vscode.js-debug/src/ui’: 目录非空
rm: 无法删除’opt/code/resources/app/extensions/theme-defaults/themes’: 目录非空
rm: 无法删除’opt/java/jdk-8/lib/missioncontrol/features/org.eclipse.ecf.filetransfer.feature_3.9.0.v20140827-1444’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/device-art-resources/nexus_7_2013’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/activities/GoogleMapsWearActivity’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/fragments/ListFragment/root/src/app_package’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/gradle-projects’: 目录非空
rm: 无法删除’opt/jetbrains/idea-IU/plugins/android/lib/templates/other/AppWidget/thumbs’: 目录非空
rm: 无法删除’opt/node/lib/node_modules1/npm/docs/src’: 目录非空
rm: 无法删除’opt/node/lib/node_modules1/npm/node_modules/are-we-there-yet’: 目录非空
image

要不要用 ntfsfix 修复一下文件系统然后再删除试试?

1赞

按照你的办法操作后报错

htsg@localhost:~> sudo ntfsfix /dev/sdb2
Refusing to operate on read-write mounted device /dev/sdb2.

然后我检查了下挂载权限

/dev/sdb2 on /run/media/htsg/885603B85603A5D2 type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)

不知道后面该怎么操作了。

这个问题的原因应该怎么去理解呢?我没有思路,这是 ntfs 日志系统记录出问题了,还是 Linux 针对 ntfs 操作有缺陷,抑或着是操作权限问题。这个硬盘上目前发现的存在该问题的总共两处,一个是截图上面的结构,另一个是单个空文件夹。我去 Windows 上删除尝试了下删除是没问题的,现在留下了一个想排查下原因找下解决办法。

这两个文件夹有个特点,都是以当前用户权限使用 cp 命令复制到硬盘上的。复制过来之后除了删不掉,不能移动外,可以重命名等其它操作。

  1. 是 ls -a 最终的文件夹,不是父文件夹,就是提示非空的那些。
  2. 第二个有实操支持吗?比如你再 cp 一个也删不掉
1赞

不会是 exFAT 文件系统吧,那也是只读的,删不了。

1赞

谢谢大家,原因找到了,我不知道怎么描述才对。上次删除文件的时候文件实际上没删除成功,但是文件结构以及索引链接删掉了(或者相反?),导致删除报非空。需要使用 fsck | chkdsk 修复文件系统结构,重新进行文件和记录的关联后,就能正常删除了, 但是哪个源能安装 fsck 呀 :joy:,难道 openSUSE 上的命令是其它的?

因为使用 tree 或者到最下面的文件夹 ls -al 时都是显示为空。复现是概率问题,有可能是硬盘接口接触不好又删除太多小文件导致的。

找到了,原来要加 sudo 才能调出 fsck :smiley:

fsck 的时候不能处在 mounted 状态,需要先 umount