tar の “file changed as we read it” エラーの回避方法



tar コマンドでアーカイブするようなスクリプトを実行しているとき、アーカイブ中にファイルが変更されるとエラーとなります。

たとえばcronでログファイルのアーカイブ中に

のようにエラーが出ます。日本語環境だと

というエラーメッセージが出ます。

このメッセージを抑止するには、tar コマンド実行時に --warning=no-file-changed のオプションを追加します。

同様にファイルが削除されたときには

というワーニングが出ますので --warning=no-file-removed のオプションを付ければ抑止できます。

また、ファイルがローテーションなどで切り捨てられたときには、

のようなメッセージが出ますので、--warning=no-file-shrank のオプションを追加します。

上記のように複数指定するのが良いと思います。

ただし、上記の指定はワーニングを消すだけで、tar コマンドの戻り値は 1 のままです。

回避策としては、tar コマンドは致命的なエラーでは 2 が戻りますので、バックアップなどのスクリプト中では戻り値 0, 1 は処理続行として扱うなどの工夫が必要です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  • キュア子の紹介

人気記事ランキング