Wie kann ich eine tar.gz-Datei aktualisieren?


Antworten:


28

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


2
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:

  1. Extrahieren Sie die .tar- Datei aus der .tar.gz- Datei:

    gunzip filename.tar.gz

  2. Aktualisieren Sie die nicht komprimierte .tar- Datei mit dem folgenden tar -uBefehl:

    tar -uf filename.tar new_file

  3. 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.

Verwandte Handbücher


5

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.


1

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.