Linux でファイルを削除するさまざまな方法の効率の比較

Linux でファイルを削除するさまざまな方法の効率の比較

Linux で大量のファイルを削除する効率をテストします。

まず500,000個のファイルを作成する

$ test for i in $(seq 1 500000);do echo text >>$i.txt;done

1. rm 削除

$ 時間 rm -f *
zsh: /home/hungerr/test [yn] 内のすべてのファイルを削除してもよろしいですか? y
zsh: 引数リストが長すぎます: rm
rm -f * 3.63秒 ユーザー 0.29秒 システム 98% CPU 3.985 合計

ファイル数が多いため、rm は機能しません。

2. 検索して削除する

$ time find ./ -type f -exec rm {} \;
find ./ -type f -exec rm {} \; 49.86秒 ユーザー 1032.13秒 システム 41% CPU 43:19.17 合計

コンピューターで約 43 分。 。 。 。 。 。動画を見ながら削除しました。

3. 削除して検索

$ 時間を見つける ./ -type f -delete
find ./ -type f -delete 0.43秒 ユーザー 11.21秒 システム 2% CPU 9:13.38 合計

9分かかります。

4. rsync削除

# まず空のフォルダblanktestを作成します
$ time rsync -a --delete blanktest/ test/
rsync -a --delete blanktest/ test/ 0.59秒 ユーザー 7.86秒 システム 51% CPU 16.418 合計16秒

非常に優れており、強力です。

5. Python 削除

インポートOS
インポートtimeit
 
main() を定義します:  
  os.walk('/home/username/test') のパス名、ディレクトリ名、ファイル名の場合:    
    ファイル名のファイル名の場合:      
      ファイル = os.path.join(パス名,ファイル名)      
      os.remove(ファイル)     
__name__ == '__main__' の場合:
t = timeit.Timer('main()','__main__ から main をインポート')
t.timeit(1) を印刷する 
 1
2
$ pythonテスト.py 529.309022903

約9分かかります。

6. Perl 削除

$ time perl -e 'for(<*>){((stat)[9]<(unlink))}'
perl -e 'for(<*>){((stat)[9]<(unlink))}' 1.28秒 ユーザー 7.23秒 システム 50% CPU 16.784 合計16秒

これが最速のはずです。

7. 結果:

  • rm: 使用できるファイルが多すぎます
  • -exec で 500,000 個のファイルを検索すると 43 分かかりました
  • -delete で検索 9 分
  • Perl 16sPython 9分
  • -delete 16s を使用した rsync

結論: rsync は、多数の小さなファイルを削除する最も高速で便利な方法です。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linuxファイル削除後にスペースが解放されない問題の詳しい説明
  • Linux ファイル管理コマンド例の分析 [権限、作成、削除、コピー、移動、検索など]
  • Linuxでファイルを削除してもスペースが解放されない問題の対処方法
  • Linux のリンク解除機能とファイルの削除方法
  • Linux は MySQL データベースのスケジュールされたバックアップを実装し、30 日以上前のバックアップ ファイルを削除します。
  • Linux は定期的に MySQL データベースをバックアップし、以前のバックアップ ファイルを削除します (推奨)
  • Linux サーバーでフォルダー、ファイル、解凍コマンドを削除する方法
  • Linux で大きなファイルの内容を消去または削除する 5 つの方法

<<:  vue の v-bind を理解する

>>:  MySQL mysqldump の使い方の詳しい説明

推薦する

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

PHP で JSON バックスラッシュを削除する例

1. 「stripslashes($_POST['json']);」メソッドを使用し...

VUE ユニアプリカスタムコンポーネントについての簡単な説明

1. 親コンポーネントはpropsを通じて子コンポーネントにデータを渡すことができる2. 子コンポー...

ドロップダウンメニューを表示または非表示にするJavaScript

この記事では、ドロップダウンメニューを表示および非表示にするJavaScriptの具体的なコードを参...

JavaScript オブジェクト指向クラス継承ケースの説明

1. オブジェクト指向のクラス継承これまでの章では、JavaScript のオブジェクト モデルがプ...

MySQL NULLがピットを引き起こした

比較演算子でNULLを使用する mysql> 1>NULLを選択します。 +------...

CSSは、マウスを線の上に置くと線全体の色を変える効果を実現します。

まとめ:以下のように、CSS で指定した行にマウスを置いたときに行全体の色を変更する方法を示します。...

MySQL 5.7.18 zip バージョンのインストール チュートリアル

MySQL の mysql 5.7.18 zip バージョンは、クリックして次のステップをクリックし...

MySQL 5.5 で範囲パーティションを追加および削除する例

導入RANGE パーティション分割は、指定された連続した間隔範囲に基づいています。RANGE の初期...

display:olck/none を使用してメニューバーを作成する方法

display:bolck/none によるメニューバーの完成の効果 図 1:まず、完成したエフェク...

Promise カプセル化 wx.request メソッド

前回の記事では、Promise を使用して小さなプログラム wx.request をカプセル化する実...

単一マシン上での Tomcat の複数インスタンスの実装

1. はじめにまず、1 台のマシンで複数のインスタンスを使用する理由という質問に答える必要があります...

React でのポータルとエラー境界処理の実装

目次ポータルエラー境界処理エラー境界を使用しない場合はどうなりますか?注記ポータルスロットとも言えま...

Dockerを使用してLaravelおよびVueプロジェクトの開発環境を構築する詳細な説明

この記事では、Docker で構築された Laravel および Vue プロジェクトの開発環境を紹...

jsを使ってシンプルなディスククロックを実現する

この記事では、参考までに、シンプルなディスククロックを実装するためのjsの具体的なコードを紹介します...