Como posso atualizar um arquivo tar.gz?

23

Eu criei um arquivo tar.gz (usando a GUI, não a linha de comando). Como posso atualizá-lo com um comando que novos arquivos são adicionados e arquivos modificados são atualizados também?

    
por xpanta 13.03.2013 / 13:54

4 respostas

23

Você normalmente usaria o sinalizador -u para isso. Do man page do tar:

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

para que essa sequência faça o que você precisa:

# 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

Para uma visão um pouco mais detalhada, veja aqui: link

    
por roadmr 13.03.2013 / 14:26
8

Solução / solução alternativa

Você não pode atualizar o arquivo TAR compactado ( .tar.gz ) em uma etapa. Mas, se você tiver espaço livre suficiente, poderá fazer isso:

  1. Extraia o arquivo .tar do arquivo .tar.gz :

    gunzip filename.tar.gz

  2. Atualize o arquivo .tar descompactado com o comando tar -u :

    tar -uf filename.tar new_file

  3. Compacte o arquivo .tar atualizado:

    gzip filename.tar

Aceleração

Se você tiver uma CPU com vários núcleos, recomendo usar pigz em vez de gzip para extrair e criar arquivos .gz . ( pigz é uma implementação multi-thread de gzip )

Basta substituir os comandos gzip / gunzip por pigz / unpigz .

Manuais relacionados

por andras.tim 28.01.2015 / 20:02
5

Se você quiser atualizar um arquivo específico no arquivo *.tar.gz , faça o seguinte:

Digite vi de onde o arquivo tar está disponível

/home>vi

Por exemplo, se você quiser modificar o simple.tar.gz que está sob o diretório /home/test/ :

/home/test>vi

E no editor vazio, digite :n simple.tar.gz e pressione Enter você vai ter a lista de pastas e arquivos movem o cursor onde vc quiser modificar E clique em Enter . Ele mostrará o editor vi do arquivo específico. Então i opção para alterar o arquivo. Após a mudança bem sucedida. Pressione a tecla Esc e escolha :wq para escrever e sair do arquivo. Então use :q para sair da lista de arquivos.

    
por priyanka 10.04.2014 / 13:28
0

Se você fizer isso repetidamente, uma otimização pode ser:

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
    
por Shubham Chaudhary 25.04.2017 / 13:43

Tags