Ich habe eine tar.gz-Datei erstellt (unter Verwendung der GUI, nicht der Befehlszeile). Wie kann ich es mit dem Befehl aktualisieren, dass neue Dateien hinzugefügt und geänderte Dateien ebenfalls aktualisiert werden?
Ich habe eine tar.gz-Datei erstellt (unter Verwendung der GUI, nicht der Befehlszeile). Wie kann ich es mit dem Befehl aktualisieren, dass neue Dateien hinzugefügt und geänderte Dateien ebenfalls aktualisiert werden?
Antworten:
Normalerweise verwenden Sie hierfür das Flag -u. Aus Tars Manpage:
-u, --update only append files newer than copy in archive
Diese Sequenz wird also tun, was Sie brauchen:
# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar
Eine etwas detailliertere Darstellung finden Sie hier: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
Sie können das komprimierte TAR-Archiv ( .tar.gz ) nicht in einem Schritt aktualisieren . Wenn Sie jedoch über genügend freien Speicherplatz verfügen, können Sie Folgendes tun:
Extrahieren Sie die .tar- Datei aus der .tar.gz- Datei:
gunzip filename.tar.gz
Aktualisieren Sie die nicht komprimierte .tar- Datei mit dem folgenden tar -u
Befehl:
tar -uf filename.tar new_file
Komprimieren Sie die aktualisierte .tar- Datei:
gzip filename.tar
Wenn Sie eine Multi-Core-CPU haben, empfehle ich, pigz
anstelle von .gz- Dateien gzip
zu extrahieren und zu erstellen . ( ist eine Multithread-Implementierung von )pigz
gzip
Ersetzen Sie einfach gzip
/ gunzip
Befehl zu pigz
/ unpigz
.
Wenn Sie eine bestimmte Datei in der *.tar.gz
Datei aktualisieren möchten , gehen Sie wie folgt vor:
Geben Sie ein, vi
von wo die tar
Datei verfügbar ist
/home>vi
Zum Beispiel, wenn Sie simple.tar.gz ändern möchten, das sich unter dem /home/test/
Verzeichnis befindet:
/home/test>vi
Und in den leeren Editor eingeben :n simple.tar.gz
und drücken Enter
Sie, um die Liste der Ordner und Dateien zu erhalten. Bewegen Sie den Cursor an die Stelle, an der Sie Änderungen vornehmen möchten, und klicken Sie Enter. Es wird der vi
Editor der jeweiligen Datei angezeigt . Dann i
Option zum Ändern der Datei. Nach der erfolgreichen Änderung. Drücken Sie die EscTaste und wählen Sie :wq
, um die Datei zu schreiben und zu beenden. Verwenden Sie :q
dann, um die Dateiliste zu verlassen.
Wenn Sie dies wiederholt tun, kann eine Optimierung sein:
if [[ -f my.tar.gz ]]; then
if [[ ! -f my.tar ]]; then
echo 'No tar, unzipping tar.gz'
gunzip my.tar.gz
fi
tar -uvf my.tar file1 file2 file_new
gzip -fk my.tar # This keeps a copy of the tar.
# -f --force overwrite existing .tar.gz
# -k --keep Keep the input file (.tar file)
else
tar -cvzf my.tar.gz file1 file2
fi