さようなら行ってください。
フォルダ内のすべての「logA」ファイルを移動し、3時間ごとにタイムスタンプを追加してから圧縮するスクリプトを作成しています。
これがスクリプトの基礎です。
cd /logs
mv *logA+timestamp /backupDIR
cd /backupDIR
--ではGZIP部分--
3時間ごとに実行されるため、.gzipファイルが/ backupDIRに既に存在することもあります。サンプル:
logA.07132020-16.00.gz
logA.07132020-19.00.gz
logA.07132020-22.00.gz
logA.07142020-02.00
スクリプトから圧縮ファイルを除外する方法は?それでも.logA + timestampがあることを確認するためにループを実行する必要がありますか?
答え1
プログラムはすでにこれを行います。以下を使用してファイルの圧縮をgzip
拒否します。.gz
gzip: <file>.gz already has .gz suffix -- unchanged
したがって、すでに圧縮されているファイルを除外する必要はありません。
エラーメッセージを表示したくない場合は、を使用してくださいgzip -q
。
答え2
gzip
実行するコマンドを提供していないので、gzip *
orなどのマイナーな操作を実行していると仮定し、gzip someprefix*
これはおそらくほとんどの場合うまくいくでしょう(注ユルゲンの答え.)
ただし、ディレクトリに考慮したくないファイルが多い場合(考慮するファイルはいくつかあります)できるパラメータの枯渇の問題(および/またはgzip
使用するファイルを決定するときにわずかな速度低下)が発生します。
この問題を解決するにはいくつかの方法があり、そのうちの1つは次のとおりです。
find /backupDIR -type f ! -name '*.gz' -print0 | xargs -0 gzip
サブディレクトリを巡回したくない場合は、次のように修正してください。
find /backupDIR -maxdepth 1 -type f ! -name '*.gz' -print0 | xargs -0 gzip