TAR 錯誤 — `wp-content: 檔案在我們讀取時已更改`

TAR 錯誤 — `wp-content: 檔案在我們讀取時已更改`

背景

我有一個 bash 別名,用於備份 Wordpress 主資料夾。該命令是從運行的/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

lsof因此,由於您的環境所聲明的敏感性,在 tar 工作時迴避挖掘正在改變的 wp-content 的內容......據推測,我可能會在操作期間擾亂觀看。

如果您可以在環境中騰出空間,則可以使用如下所示的方法來保持公共的「離線」副本保持最新:

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

它將在初始複製後快速運行,因為它只會複製差異。您可以考慮--exclude在此處新增選項,以節省複製要從存檔中排除的檔案的工作。

然後,像以前一樣製作 tar 存檔,backups/public 作為來源:

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一個在運行時不會發生任何變化的環境。

相關內容