背景
私は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
、他の人が示唆しているように、実行中に何も変更されない環境が効果的に実現されます。