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 の使い方の詳しい説明

推薦する

HTML_PowerNode 入門 Java アカデミー

HTMLとは何ですか? HTML は Web ページを記述するために使用される言語です。 HTML ...

MySQL の日付と時刻の加算と減算のサンプル コード

目次1.MySQLは時間間隔を加算または減算します2. 日付を減算する最近、MySQL を見直してい...

JavaScript の新しい要素トラバーサルプロパティを使用して子要素をトラバースする方法を学びます

目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...

Reactはconetxtを通じてマルチコンポーネント値転送関数を実装します

この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...

MySQLデータを復元する2つの方法

1. はじめに少し前、開発者がテスト環境や本番環境で誤った操作をし、データベースを誤って削除/更新し...

コンピュータが予期せずシャットダウンした後、VMware で Linux がインターネットに接続できない問題の解決策

問題の説明: Linux システムのネットワーク カード ファイル /etc/sysconfig/n...

フロントエンド開発における一般的なテクニックのまとめ

1. 記事タイトルリストの右側に日付を表​​示する方法:コードをコピーコードは次のとおりです。 &l...

HTML+CSS で div タグの右上隅に削除アイコンを追加するサンプルコード

1. 要件の説明Divタグの右上隅に削除アイコンを表示します2. 実装html、CSS 3. 参照コ...

JavaScriptのスタックとコピーの詳細な説明

目次1. スタックの定義2. JSスタックの調査1. スタックとヒープ2. 基本型と参照型3. 値渡...

キーフリーログインプロセスを実現するためのLinux構成の分析

1.sshコマンドLinux では、ssh コマンドを使用して別のサーバーにログインできます。 2 ...

HTML マーキータグの使用例

このタグはHTML3.2の一部ではなく、MSIE3以降のカーネルのみをサポートしています。そのため、...

MySQL 起動失敗の問題とシナリオ分析

1. ワンストップソリューション1. 問題の分析と特定 # MySQL設定ファイルを見つけて、MyS...

MySQL 8.0.17 をインストールしてリモート アクセスを構成する方法

1. インストール前の準備データベースのバージョンを確認するコマンド: mysql --versio...

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例

MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例最近のプロ...