TAR エラー — `wp-content: ファイルは読み取り時に変更されました`

TAR エラー — `wp-content: ファイルは読み取り時に変更されました`

背景

私はWordpressのホームフォルダをバックアップするために使用するbashエイリアスを持っています。コマンドは以下から実行されます。/home/waiheke26/sites/www.DOMAIN.co.nz/public

コマンドは次のとおりです:

tar --exclude='./wp-content/uploads' \
    --exclude='./wp-content/cache' \
    --exclude ='./cache' \
    --exclude='./wp-content/backups' \
    --exclude='./wp-snapshots' \
    --exclude='./wp-content/envato-backups' \
    -zcf \
    /home/waiheke26/sites/www.DOMAIN.co.nz/backups/wp-files-$(date +%Y-%m-%d-%H.%M.%S).tar.gz \
    . \ 
    && echo "File backup OK" || echo "File backup failed"';

問題

最近、コマンドを実行すると次のエラーが発生します:

tar: ./wp-content: file changed as we read it
File backup failed

このエラーに関して私がオンラインで目にした情報の多くは、file changed as we read itユーザーがアーカイブされるディレクトリ内に tar ファイルを作成していることが原因であると示唆しています。私のケースでは、tar ファイルが別の場所に作成されているため、これは当てはまりません。

質問

このエラーの原因をどのように特定すればよいでしょうか?

答え1

したがって、環境変数の感度を考慮して、tar が動作している間に wp-content に何が変更されているかを詳しく調べるのは、しばらくは避けます。推測ですが、lsof操作中に監視すると、混乱が生じる可能性があります。

環境に余裕がある場合は、次のような方法でパブリックの「オフライン」コピーを最新の状態に保つことができます。

rsync -va /home/asdf/public/ /home/asdf/backups/public/ --delete

差分のみをコピーするため、最初のコピー後はすぐに実行されます。--excludeアーカイブから除外するファイルをコピーする作業を省くために、ここでオプションを追加することを検討できます。

次に、前と同じように、backups/public をソースとして tar アーカイブを作成します。

tar --exclude='./whatever' \
    -zcf \
    /home/asdf/backups/wp-files-$(date +%Y-%m-%d-%H.%M.%S).tar.gz \
    /home/asdf/backups/public \ 
    && echo "File backup OK" || echo "File backup failed"';

これによりtar、他の人が示唆しているように、実行中に何も変更されない環境が効果的に実現されます。

関連情報