Fundo
Eu tenho um alias bash que uso para fazer backup de uma pasta inicial do Wordpress. O comando é executado a partir de/home/waiheke26/sites/www.DOMAIN.co.nz/public
O comando é:
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"';
O problema
Recentemente, quando executo o comando, recebo o erro:
tar: ./wp-content: file changed as we read it
File backup failed
Muito do que vi online sobre esse file changed as we read it
erro sugere que é porque o usuário está criando o arquivo tar dentro do diretório que está sendo arquivado. No meu caso, isso não se aplica, pois o arquivo tar está sendo criado em outro lugar.
Pergunta
Como posso determinar a causa desse erro?
Responder1
lsof
Então, evitando investigar o que está mudando o conteúdo do wp enquanto o tar está funcionando por um momento por causa da sensibilidade declarada do seu ambiente.
Se você puder poupar espaço em seu ambiente, poderá manter uma cópia "offline" do seu público atualizada usando algo como isto:
rsync -va /home/asdf/public/ /home/asdf/backups/public/ --delete
Ele será executado rapidamente após a cópia inicial, pois copiará apenas diferenças. Você pode considerar adicionar --exclude
opções aqui para salvar o trabalho de copiar arquivos que você excluirá do arquivo de qualquer maneira.
Em seguida, faça seu arquivo tar como antes, backups/public como fonte:
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"';
Isso efetivamente proporciona tar
um ambiente onde nada mudará durante a execução, como outros sugeriram.