Come posso aggiornare un file tar.gz?

21

Ho creato un file tar.gz (usando la GUI, non la riga di comando). Come posso aggiornarlo con un comando che i nuovi file vengono aggiunti e anche i file modificati vengono aggiornati?

    
posta xpanta 13.03.2013 - 13:54

4 risposte

21

Normalmente userai l'opzione -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, consulta qui: link

    
risposta data roadmr 13.03.2013 - 14:26
8

Soluzione / soluzione alternativa

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

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

    gunzip filename.tar.gz

  2. Aggiorna il file .tar non compresso con il comando tar -u :

    tar -uf filename.tar new_file

  3. Comprimi il file .tar aggiornato:

    gzip filename.tar

Speedup

Se hai una CPU multi-core, ti consiglio di utilizzare pigz anziché gzip per estrarre e creare file .gz . ( pigz è un'implementazione multi-threaded di gzip )

Sostituisci semplicemente gzip / gunzip comandi in pigz / unpigz .

Manuali correlati

risposta data andras.tim 28.01.2015 - 20:02
5

Se vuoi aggiornare un determinato file in *.tar.gz file, procedi come segue:

Inserisci vi da dove è disponibile il file tar

/home>vi

Ad es., se vuoi modificare simple.tar.gz che è in /home/test/ nella directory:

/home/test>vi

E nell'editor vuoto inserisci :n simple.tar.gz e premi Invio si otterrà l'elenco di cartelle e file spostando il cursore dove si desidera modificare E fai clic su Invio . Mostrerà l'editor vi del particolare file. Quindi l'opzione i per cambiare il file. Dopo il successo del cambiamento. Premere il tasto Esc e scegliere :wq per scrivere e uscire dal file. Quindi usa :q per uscire dall'elenco dei file.

    
risposta data priyanka 10.04.2014 - 13:28
0

Se lo farai ripetutamente, l'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
    
risposta data Shubham Chaudhary 25.04.2017 - 13:43

Leggi altre domande sui tag