Especifique stdin como arquivo de entrada, por exemplo:
tar tf updated.tar | tar cf backup.tar -T -
Eu tenho um processo que cria um arquivo tar com cópias de arquivos que precisam ser atualizados.
Eu quero fazer backup dos arquivos existentes antes de sobrescrever os novos arquivos.
Eu tentei
tar cf backup.tar -T 'tar tf updated.tar'
O que não funcionou. Se eu canalizar a saída do tar tf para um arquivo, então use isso como o -T param ele funciona:
tar tf updated.tar > list; tar cf backup.tar -T list
Mas parece-me que eu deveria ser capaz de realizar isso em um comando. É possível?
A opção -T está procurando especificamente por um arquivo, não por 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
Eu uso este comando:
tar cf backup.tar 'tar tf updated.tar'
Tags tar