Linuxでの大量のディレクトリ・ファイル削除について

ふむ〜 ものすごい久しぶりに記事を書いてみたり^^;
(危なく一年ぶりとかになるところだtt)

さて、LinuxPCでFedorCore6を入れて遊んでいたいのですが・・・・
apache 2.2.4とかで使えるキャッシュ機能をONにして


CacheEnable disk /
CacheRoot “/var/cache/mod_disk_cache”
CacheDirLevels 5
CacheDirLength 3

とかやって「ずーっと」放置してたんです、ハイ。

で、ある日ふと・・ディスク使用量を見てみると・・・

??

20G!?

え〜っと・・・ どいうことでしょ?
と 調べると・・・

mod_disk_cacheで、ひたすらに ただひたすらに キャッシュがたまっていたという落ちが・・・orz

慌ててファイル削除をしてみたものの・・・

>rm -Rf /var/cache/mod_disk_cache
>引数リストが長すぎます

・・・・

さらに調べてみると、rmコマンドが一度リストを作ってから実行する処理のため、あまりのファイル数にどうやらOSの制限に引っかかってしまい
「そんなに一気に処理できんわ!」
と起こられている模様・・・

対策として調べてみると
パイプ処理で渡してやると巧く抜けられる様子

そこで、

ファイルの削除を
find /var/cache/mod_disk_cache -type f -print0 |xargs -0 rm -f

ディレクトリの削除を
find /var/cache/mod_disk_cache -type d -print0 |xargs -0 rmdir

としてみました。

ディレクトリの削除の方でで rm -rf とできればいいんですが・・同じ目にあってしまいます。

これにはさらに面倒な点がありまして。
ディレクトリの削除に関しては、一番奥の階層から削除されていくので階層分繰り返す必要がアリマス。

とりあえずは、これで削除できたらかヨシ・・・っと。

大量・複階層のディレクトリの削除方法でもっと良いものがあれば、どなたかご教授くださいマセ。

“Linuxでの大量のディレクトリ・ファイル削除について” への1件の返信

  1. -depth オプションを付けて

    find /var/cache/mod_disk_cache -type d -depth -print0 |xargs -0 rmdir

    ではいかがでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください