Hintergrund
Ich habe einen Bash-Alias, den ich zum Sichern eines Wordpress-Home-Ordners verwende. Der Befehl wird ausgeführt von/home/waiheke26/sites/www.DOMAIN.co.nz/public
Der Befehl lautet:
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"';
Das Thema
Wenn ich den Befehl vor kurzem ausführe, erhalte ich die folgende Fehlermeldung:
tar: ./wp-content: file changed as we read it
File backup failed
Vieles, was ich online zu diesem file changed as we read it
Fehler gelesen habe, lässt darauf schließen, dass der Benutzer die Tar-Datei im zu archivierenden Verzeichnis erstellt. In meinem Fall trifft das nicht zu, da die Tar-Datei woanders erstellt wird.
Frage
Wie kann ich die Ursache dieses Fehlers ermitteln?
Antwort1
lsof
Ich verzichte also für einen Moment darauf, mich mit der Frage zu befassen, was den WP-Inhalt ändert, während Tar arbeitet, da Ihre Umgebung so sensibel ist … was ich, spekulativ betrachtet, während des Vorgangs vielleicht durcheinanderbringen könnte .
Wenn in Ihrer Umgebung genügend Platz vorhanden ist, können Sie eine „Offline“-Kopie Ihrer öffentlichen Dateien auf dem neuesten Stand halten, indem Sie Folgendes verwenden:
rsync -va /home/asdf/public/ /home/asdf/backups/public/ --delete
Es wird nach dem ersten Kopieren schnell ausgeführt, da nur Unterschiede kopiert werden. Sie können hier Optionen hinzufügen, --exclude
um sich das Kopieren von Dateien zu ersparen, die Sie ohnehin aus dem Archiv ausschließen.
Erstellen Sie dann Ihr Tar-Archiv wie zuvor, mit Backups/Public als Quelle:
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"';
Dadurch wird effektiv tar
eine Umgebung geschaffen, in der sich während der Ausführung nichts ändert, wie andere bereits vorgeschlagen haben.