Observe que find
chamará a ação -exec
para todos os arquivos que encontrar.
Se você executar tar -cvf file.tar {}
para cada arquivo find
outputs, isso significa que você sobrescreverá file.tar
todas as vezes, o que explica por que você acaba com um arquivo que contém apenas anaconda.storage.log
- é o último arquivo find
saídas.
Agora, você realmente deseja anexar os arquivos ao arquivo, em vez de criá-lo toda vez (isso é o que a opção -c
faz). Então, use o seguinte:
find var/log/ -iname "anaconda.*" -exec tar -rvf file.tar {} \;
A opção -r
é anexada ao arquivo, em vez de ser recriada sempre.
Observação: Substitua -iname anaconda.*
por -iname "anaconda.*"
. O asterisco é um curinga e pode ser expandido pelo seu shell antes que find
o veja. Para evitar essa expansão, coloque o argumento entre aspas duplas.
Quanto a tar
remover o líder /
: O arquivo deve conter apenas nomes de arquivos relativos . Se você adicionasse arquivos com um /
inicial, eles seriam armazenados como nomes de arquivos absolutos /var/… no seu computador, por exemplo.
IIRC isto é simplesmente uma precaução para tar
implementações além do GNU, e é mais seguro desta forma porque você não sobrescreverá seus dados reais em /var/…
quando você extrair o arquivo se ele contiver nomes de arquivos relativos.