すべてのコマンドがハングする巨大なディレクトリを削除します。

すべてのコマンドがハングする巨大なディレクトリを削除します。

このように大きなディレクトリを削除する方法は?

stat session/
  File: ‘session/’
  Size: 321540096       Blocks: 628040     IO Block: 4096   directory
Device: 903h/2307d      Inode: 11149319    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-09-29 14:34:40.910894275 +0200
Modify: 2022-09-29 14:35:09.598400050 +0200
Change: 2022-09-29 14:35:09.598400050 +0200
 Birth: -

ディレクトリサイズ(コンテンツではなくディレクトリエントリ自体)が300 MBを超えています。 inodeの数が1,100万個を超えています。

このディレクトリにはサブディレクトリはなく、ファイルの束だけがあります。

一般的なコマンドは機能しません。私はこれを試しました:

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

私がls -f1それにぶつかったら、ただ停止します。

私がmv -- * ../.tmp_to_deleteそれにぶつかったら、ただ停止します。

私がduそれにぶつかったら、ただ停止します。

現在、rsync --deleteは最大7MB / sの読み取り速度で2日間実行されており、ディレクトリのstat出力に変更はありません。

ディレクトリが大きすぎるのは問題のようです。

ベストアンサー1

解決済み:4日後、rsyncは操作を完了しました。すべてのファイルが削除されました。ただし、単一のファイルを削除する前にディレクトリ情報を読み取るには少なくとも2日かかります。

同様の問題が発生する可能性がある人のための情報は次のとおりです。画面を使って忍耐強い

おすすめ記事