Фон
У меня есть псевдоним 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
Итак, на время отвлечемся от изучения того, что изменяет wp-content во время работы tar, из-за заявленной чувствительности вашей среды, которую, предположительно, я могу испортить, наблюдая за ней lsof
во время операции.
Если вы можете выделить место в своей среде, вы можете поддерживать «офлайн» копию своего публичного контента в актуальном состоянии, используя что-то вроде этого:
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
среду, в которой ничего не изменится во время работы, как и предполагали другие.