Como posso criar um arquivo tar a partir de uma lista de arquivos em outro arquivo tar?


0

Eu tenho um processo que cria um arquivo tar com cópias de arquivos que precisam ser atualizados.

Quero fazer backup dos arquivos existentes antes de substituir os novos arquivos.

eu tentei

tar cf backup.tar -T `tar tf updated.tar`

O que não deu certo. Se eu canalizar a saída do tar tf para um arquivo, use-o como o parâmetro -T, ele funciona:

tar tf updated.tar > list; tar cf backup.tar -T list

Mas parece-me que eu seria capaz de fazer isso de uma só vez. É possível?

Respostas:


3

Especifique stdin como arquivo de entrada, por exemplo:

tar tf updated.tar | tar cf backup.tar -T -


1

A opção -T está procurando especificamente um arquivo, não uma lista. Sua primeira tentativa passa uma lista para -T, e é provavelmente por isso que não funciona. Eu tentaria algo como:

tar tf updated.tar | xargs tar cf backup.tar

1
Isso pode falhar em alguns casos raros. O número máximo de argumentos de linha de comando permitidos é restrito. Veja getconf ARG_MAX.

Bom ponto ... então a resposta de H. Dirk Schmitt é provavelmente melhor.
John

@ H.-DirkSchmitt: Note-se que xargsnormalmente cuida disso dividindo o comando em várias invocações. (Ele simplesmente não funciona como esperado aqui desde uma segunda tar csubstitui a primeira saída.)
grawity

-1

Eu uso este comando:

tar cf backup.tar `tar tf updated.tar`
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.