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

推薦する

Vue の新しい組み込みコンポーネントの使用方法の詳細な説明

目次1. テレポート1.1 テレポートの紹介1.2 テレポートの使用1.3 プレビュー効果2. サス...

Ubuntu 20.04 ファイアウォール設定の簡単なチュートリアル (初心者)

序文ますます便利になった今日のインターネット社会では、さまざまなインターネット ランサムウェア ウイ...

MySQL サービスを起動できない問題の解決策を含む MySQL 5.7.17 インストール チュートリアル

.net 開発に関しては、Microsoft の SQL Server データベースに精通しており、...

MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

のようにLIKE ではデータ全体が一致する必要がありますが、REGEXP では部分的な一致のみが必要...

Linux でファイルプレフィックスを一括で追加する方法

フォルダー内のすべての txt ファイルのファイル名の前に「gt_」を追加する必要があります。つまり...

MySQLのデッドロックとログに関する詳細な説明

最近、MySQL オンラインでいくつかのデータ異常が発生しましたが、すべて早朝に発生しました。ビジネ...

SSH経由でリモートLinuxシステムでコマンドを実行する方法

場合によっては、リモート マシンでいくつかのコマンドを実行する必要があることがあります。これが時々行...

CSS 経由で JS にパラメータを渡す方法

1. CSSを通す必要がある背景CSS におけるメディアクエリの用途は、デバイスサイズの判別、マウス...

MySQLの大規模テーブル最適化ソリューションについての簡単な説明

背景Alibaba Cloud RDS for MySQL(MySQL バージョン 5.7)データベ...

mysql は sql ファイルを実行し、エラーを報告します エラー: 不明なストレージ エンジン 'InnoDB' ソリューション

問題を見つける最近、仕事で問題が発生しました。InnoDB タイプの SQL ファイルを実行すると、...

web.config (IIS) および .htaccess (Apache) の構成

xml <?xml バージョン="1.0" エンコーディング="...

Flexレイアウトとスケーリング計算についての簡単な説明

1. Flexレイアウトの紹介Flex は Flexible Box の略で、「柔軟なレイアウト」を...

MySQL マルチインスタンス構成ソリューション

1.1 MySQL マルチインスタンスとは何ですか?簡単に言うと、MySQL マルチインスタンスとは...

MAC での MYSQL5.7.17 接続失敗の問題と解決策

MYSQL5.7.17 が MAC で接続できない問題。SQLBench_community 6.3...

2017 最新バージョンの Windows インストール MySQL チュートリアル

1. まず、MySQL の公式サイトから最新バージョンの MySQL をダウンロードします。リンクを...