アーカイブ作成時間の最適化

アーカイブ作成時間の最適化

現在、私は次のコマンドを使用して7日より古いファイルを含むアーカイブを作成しています。

find /var/tunningLog/ -type f -mtime +7 -print0 | tar -czf "/var/tunningLog/$(date '+%Y-%m-%d').tar.gz" --null -T - && echo "OK" || echo "NOK"

しかし、時間がかかります(現在/var/tunningLog/49G)。プロセスをスピードアップしたりコマンドを改善したりする方法はありますか?ありがとう

答え1

/var/TuningLogでアーカイブを作成しているため、作成するアーカイブには、/var/TuningLog1週間前または前に作成されたアーカイブが含まれています。あなたのプロフィールは引き続き増加しています。

目的のファイルが除外されない場合は、を変更してfindそのファイルを除外します()。\! -name '*.tar.gz'

または

プロフィールを他の場所に保存してください。

答え2

パイプの使用は、find | tarコードを再利用する唯一の方法がパイプを介してコマンドを結合することだけであったUNIX時代のアーティファクトです。

stat(2)各ファイルに対して2回実行する必要があるため、遅くなります。

  • コマンドでfind(1)目的のファイルが識別された場合

  • tar(1)tarにはアーカイブのためのメタデータが必要なので、他の時間は内部から来ます。

'33年からは共有ライブラリを利用して再利用可能なコードを構成する別の方法があり、'16年からはlibfind機能を再利用できるようにfindコマンドのすべての機能を含める方法がありました。

たとえば、非標準tarオプションを使用しているため、tarヘッダーの生成に誤ったコードとして知られているgtarの代わりに-T使用しているようです。gtartar

確認してくださいstar。これは最も古い無料のtar実装であり、libfind2005年以降のサポートが含まれており、-findコマンドラインの右側で構文を使用できるオプションのサポートが含まれています。find(1)-find

たとえば、schilytools Web ページのマニュアルページを確認します。http://schilytools.sourceforge.net/man/man1/star.1.html

これにより、次のようなコマンドラインが生成されます。

star -c -f /tmp/xxx.tar -find . -type f -mtime +7

関連情報