Come posso aggiornare un file tar.gz?


Risposte:


28

Normalmente useresti il ​​flag -u per questo. Dalla pagina man di tar:

 -u, --update
       only append files newer than copy in archive

quindi questa sequenza farà ciò di cui hai bisogno:

# 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

Per un aspetto leggermente più dettagliato, consultare qui: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html


2
OP stava chiedendo informazioni sull'aggiornamento dell'archivio compresso che non può essere aggiornato.
QkiZ il

18

Soluzione / Soluzione alternativa

Non è possibile aggiornare l'archivio TAR compresso ( .tar.gz ) in un solo passaggio. Ma se hai abbastanza spazio libero puoi farlo:

  1. Estrarre il file .tar dal file .tar.gz :

    gunzip filename.tar.gz

  2. Aggiorna il file .tar non compresso con il tar -ucomando:

    tar -uf filename.tar new_file

  3. Comprimi il file .tar aggiornato :

    gzip filename.tar

Accelerare

Se si dispone di CPU multi-core, si consiglia di utilizzare pigzanziché gzipestrarre e creare file .gz . ( pigzè un'implementazione multi-thread di gzip)

Sostituisci semplicemente gzip/ gunzipcomandi in pigz/ unpigz.

Manuali correlati


5

Se desideri aggiornare un determinato file nel *.tar.gzfile, procedi come segue:

Immettere vida dove tarè disponibile il file

/home>vi

Ad esempio, se si desidera modificare simple.tar.gz che si trova nella /home/test/directory:

/home/test>vi

E nell'editor vuoto, immettere :n simple.tar.gze premere Enter per visualizzare l'elenco di cartelle e file, spostare il cursore nel punto in cui si desidera modificare e fare clic Enter. Verrà mostrato l' vieditor del file specifico. Quindi iopzione per modificare il file. Dopo il cambiamento riuscito. Premere il Esctasto e scegliere :wqdi scrivere ed uscire dal file. Quindi utilizzare :qper uscire dall'elenco dei file.


1

Se lo farai ripetutamente, un'ottimizzazione può essere:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.