删除导致所有命令挂起的巨大目录

Boj*_*kas 6 large-files rm delete

这么大的目录怎么删除呢?

\n
stat session/\n  File: \xe2\x80\x98session/\xe2\x80\x99\n  Size: 321540096       Blocks: 628040     IO Block: 4096   directory\nDevice: 903h/2307d      Inode: 11149319    Links: 2\nAccess: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)\nAccess: 2022-09-29 14:34:40.910894275 +0200\nModify: 2022-09-29 14:35:09.598400050 +0200\nChange: 2022-09-29 14:35:09.598400050 +0200\n Birth: -\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,目录的大小(不是内容,而是目录项本身)超过 300MB。\ninode 数量超过 1100 万个。

\n

该目录没有子目录,只有大量文件。

\n

常用命令都不起作用。我已经尝试过这些:

\n
    \n
  • rsync -a --delete empty_dir/ session/
  • \n
  • rm -rf session
  • \n
  • find . -type f --delete
  • \n
\n

如果我跑ls -f1进去,它就会挂起。

\n

如果我跑mv -- * ../.tmp_to_delete进去,它就会挂起。

\n

如果我跑du进去,它就会挂起。

\n

目前 rsync --delete 已经运行了两天,读取速度高达 7MB/s,并且我看到目录的统计输出没有变化。

\n

我认为目录太大是问题所在。

\n

Boj*_*kas 3

已解决:4 天后,rsync 完成了工作 - 所有文件都已被删除 - 但在删除单个文件之前,它至少需要 2 天来读取目录信息。

这是为可能遇到类似问题的任何人提供的信息:使用屏幕并保持耐心