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?

chris
fonte

Respostas:

3

Especifique stdin como arquivo de entrada, por exemplo:

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


fonte
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
John
fonte
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`
fvielle
fonte