几个月前“发生了一些事情”,一个文件夹被损坏了。我想删除该文件夹 - 或者更确切地说,我想删除指向分配给该文件夹的空间的 inode。我认为那里没有任何数据,所以没有什么可失去的。
请注意,使用 ls 和“i”选项无法找到 inode。
2590623 drwxrwxr-- 744 web15 client1 36864 Jun 28 00:18 .
2590617 drwxr-xr-x 18 root root 4096 Mar 28 17:30 ..
2603401 drwx------ 2 web15 client1 4096 May 20 2021 .mount_CollabDCMBh4
2623352 drwx------ 2 web15 client1 4096 Mar 30 15:00 .mount_CollabKq1DUR
? d????????? ? ? ? ? ? .mount_CollabN9npNy
4644867 drwx------ 2 web15 client1 4096 Jun 21 14:55 .mount_CollabS8Qf2G
3106436 drwx------ 2 web15 client1 4096 Jul 16 2021 .mount_CollabUw4Eed
我非常反对使用 rm 或类似命令(对文件夹的文件系统进行操作)以强制删除文件夹。由于这看起来已严重损坏,我不想冒险让隐藏的 inode 指向某个有效位置,而删除命令可能会盲目地遵循该路径删除与此完全无关的内容。也就是说,如果可以将该数据强制转换为整数,我不希望 rm 尝试对该地址中的任何内容执行删除操作。
所以我宁愿删除 inode 本身,以便当前文件夹看不到它。
在这个特定场景中,上面显示的文件夹是 /var/www/sites/.../tmp 文件夹,我可以毫无问题地删除该文件夹中的所有内容。我确实有 tmp 文件夹本身的 inode ID。因此,我可以使用 rm 删除 tmp 中的所有其他内容,然后删除 tmp(父文件夹)的 inode,这样就消除了子文件夹的可见性。
但我想把这个问题抛给这里的观众,看看是否有办法获取有关文件系统这一部分的更多信息,以便可以执行更精确的操作。我相信如果卷未安装,可以对其进行操作,但该系统托管网站,所以我更愿意继续这样做。