Cada uma das suas duas abordagens estava perto de funcionar, mas cada uma delas tinha um problema distinto.
Na sua primeira abordagem, você tenta enviar uma lista de arquivos para tar
. Se você quiser que tar
leia a lista de arquivos da entrada padrão, será necessário usar as opções -T
/ --files-from
e -
, por exemplo,
find -name '*.png' -print0 | tar -cvf backup.tar --null -T -
Para uma referência, consulte a documentação oficial:
OBSERVAÇÃO: O uso dos sinalizadores -print0
e --null
deve garantir que isso também lide com nomes de arquivos que incluam espaço em branco.
Na sua segunda abordagem, você tenta executar tar
via xargs
, mas está usando a opção "criar" ( --create
/ -c
). Se você usar a opção "criar" com xargs
ou em um loop for, ela sobrescreverá o arquivamento após cada iteração. Em vez disso, tente usar a opção "append" ( -a
/ --append
) ou a opção "update" ( -u
/ --update
), por exemplo:
find -name "*.png" -exec tar -uvf backupp.tar {} \;
Isso anexará arquivos ao arquivo após cada iteração, em vez de sobrescrevê-lo.
De qualquer forma, quando terminar, você poderá usar a opção "lista" ( --list
/ -t
) para visualizar o conteúdo do arquivo e verificar se tudo funcionou como esperado:
tar tf backupp.tar