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エンジニア募集の採用情報をご覧いただけます。
キュアコード公式インスタグラム
キュアコード株式会社の新サービス情報や、オフィスライフの素敵な瞬間まで。私たちの日々の営みをご紹介します。