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?
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
OP hat nach dem Aktualisieren des komprimierten Archivs gefragt, das nicht aktualisiert werden kann.
QkiZ
18
Lösung / Problemumgehung
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 -uBefehl:
tar -uf filename.tar new_file
Komprimieren Sie die aktualisierte .tar- Datei:
gzip filename.tar
Beschleunigen
Wenn Sie eine Multi-Core-CPU haben, empfehle ich, pigzanstelle von .gz- Dateien gzipzu extrahieren und zu erstellen . ( ist eine Multithread-Implementierung von )pigzgzip
Ersetzen Sie einfach gzip/ gunzipBefehl zu pigz/ unpigz.
Wenn Sie eine bestimmte Datei in der *.tar.gzDatei aktualisieren möchten , gehen Sie wie folgt vor:
Geben Sie ein, vivon wo die tarDatei 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.gzund 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 viEditor der jeweiligen Datei angezeigt . Dann iOption 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 :qdann, 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
Antworten:
Normalerweise verwenden Sie hierfür das Flag -u. Aus Tars Manpage:
Diese Sequenz wird also tun, was Sie brauchen:
Eine etwas detailliertere Darstellung finden Sie hier: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
quelle
Lösung / Problemumgehung
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
Beschleunigen
Wenn Sie eine Multi-Core-CPU haben, empfehle ich,
pigz
anstelle von .gz- Dateiengzip
zu extrahieren und zu erstellen . ( ist eine Multithread-Implementierung von )pigz
gzip
Ersetzen Sie einfach
gzip
/gunzip
Befehl zupigz
/unpigz
.Verwandte Handbücher
quelle
Wenn Sie eine bestimmte Datei in der
*.tar.gz
Datei aktualisieren möchten , gehen Sie wie folgt vor:Geben Sie ein,
vi
von wo dietar
Datei verfügbar istZum Beispiel, wenn Sie simple.tar.gz ändern möchten, das sich unter dem
/home/test/
Verzeichnis befindet: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 dervi
Editor der jeweiligen Datei angezeigt . Danni
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.quelle
Wenn Sie dies wiederholt tun, kann eine Optimierung sein:
quelle