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 は処理続行として扱うなどの工夫が必要です。

ITエンジニア募集中!

キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。

下記よりITエンジニア募集の採用情報をご覧いただけます。


コメントを残す

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

CAPTCHA