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一个运行时不会发生任何变化的环境。

相关内容