English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
前書き
本文で言う「大量」は、大きさではなく、数を指しています。例えば、あるディレクトリには数百万の小ファイルがあります。
最近、サーバーを最適化する際に、postfixのmaildropディレクトリとclientmqueueディレクトリに大量のファイルがあることに気づきました。これらのディレクトリに入ると、lsコマンドを使用するのは愚かですし、直接rmを実行することもできません。 * 、何の反応もなく、ファイルの数も減りませんでした。つまり、大量のファイルディレクトリ内で直接rmコマンドを使用して削除することは効果がありませんでした。
正しい方法はどちらでしょうか?選択できる方法が2つあります:
第1種:
find /path/to/directory -type f -exec rm {} \;
第2種:
ls -1 /path/to/directory | xargs -I{} rm {}
上記の2つの方法は、大量のファイルを成功して削除し、速度も非常に速いです。しかし、さらに良い方法もあります。例えば、上記で言及されたclientmqueueディレクトリを削除する場合、ディレクトリ内にはすべてのメールが含まれています。以下の方法を使用します:
service sendmail stop cd /var/spool mv clientmqueue clientmqueue-todelete mkdir clientmqueue chown --reference=clientmqueue-todelete clientmqueue chmod --reference=clientmqueue-todelete clientmqueue service sendmail start rm -rf clientmqueue-todelete
上記の方法は、ディレクトリを再名付けし、次に使用しました --reference 引用パラメータを使用してディレクトリを再構築し、再名付けられたディレクトリを削除します。ディレクトリを直接削除する方法は非常に高速です。また、バックアップを残して削除しないこともできます。より安全です。
要約
以上がこの記事の全ての内容です。本文の内容が皆様の学習や仕事に少しでも役立つことを願っています。何か疑問があれば、コメントで交流してください。ありがとう、呐喊教程のサポートに感謝します。