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 it
error 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 lsof
durante 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 --exclude
opciones 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 tar
un entorno donde nada cambiará mientras se está ejecutando, como han sugerido otros.