1 votes

Erreur TAR - `wp-content : le fichier a été modifié lors de la lecture`.

Contexte

J'ai un alias bash que j'utilise pour sauvegarder un dossier personnel Wordpress. La commande est exécutée à partir de /home/waiheke26/sites/www.DOMAIN.co.nz/public

La commande est :

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 question

Récemment, lorsque j'exécute la commande, j'obtiens l'erreur :

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

La plupart de ce que j'ai vu en ligne concernant ce sujet file changed as we read it suggère que c'est parce que l'utilisateur crée le fichier tar dans le répertoire en cours d'archivage. Dans mon cas, cela ne s'applique pas, car le fichier tar est créé ailleurs.

Pregunta

Comment puis-je déterminer la cause de cette erreur ?

1voto

Donc, en évitant de creuser sur ce qui modifie le contenu de wp pendant que tar fonctionne pour un moment à cause de la sensibilité déclarée de votre environnement que, spéculativement, je pourrais modifier en regardant lsof pendant l'opération.

Si vous disposez de l'espace nécessaire dans votre environnement, vous pouvez conserver une copie "hors ligne" de votre public à jour en utilisant quelque chose comme ceci :

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

Il s'exécutera rapidement après la copie initiale, car il ne copiera que les diffs. Vous pouvez envisager d'ajouter --exclude pour vous éviter de copier des fichiers que vous exclurez de toute façon de l'archive.

Ensuite, faites votre archive tar comme précédemment, sauvegardes/public comme source :

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

Cela donne effectivement tar un environnement où rien ne changera pendant l'exécution, comme d'autres l'ont suggéré.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X