Error TAR: `wp-content: el archivo cambió mientras lo leíamos`

Error TAR: `wp-content: el archivo cambió mientras lo leíamos`

Fondo

Tengo un alias de bash que uso para hacer una copia de seguridad de una carpeta de inicio de Wordpress. El comando se ejecuta desde/home/waiheke26/sites/www.DOMAIN.co.nz/public

El comando es:

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"';

La cuestión

Recientemente, cuando ejecuto el comando me sale el error:

tar: ./wp-content: file changed as we read it
File backup failed

Gran parte de lo que he visto en línea con respecto a este file changed as we read iterror sugiere que se debe a que el usuario está creando el archivo tar dentro del directorio que se está archivando. En mi caso, eso no se aplica, ya que el archivo tar se crea en otro lugar.

Pregunta

¿Cómo puedo determinar la causa de este error?

Respuesta1

Entonces, evitando profundizar en lo que está cambiando el contenido de wp mientras tar está funcionando por un momento debido a la sensibilidad declarada de su entorno... que, especulativamente, podría molestarme en observar lsofdurante la operación.

Si tiene espacio en su entorno, puede mantener actualizada una copia "sin conexión" de su público usando algo como esto:

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

Se ejecutará rápidamente después de la copia inicial, porque solo copiará diferencias. Podría considerar agregar --excludeopciones aquí para ahorrar el trabajo de copiar archivos que excluirá del archivo de todos modos.

Luego, haga su archivo tar como antes, copias de seguridad/público como fuente:

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"';

Esto efectivamente proporciona tarun entorno donde nada cambiará mientras se está ejecutando, como han sugerido otros.

información relacionada