Olhando para as outras respostas postadas aqui até agora, estou preocupado que os usos que vejo de xargs
e find -exec {}
sejam errôneos. Se e quando a lista de arquivos aumentar o suficiente para que tar -c
seja executado por xargs
mais de uma vez, o arquivo tar preenchido nesse ponto será sobrescrito. Assim, somente os arquivos da última invocação de tar
serão finalizados no tarfile.
Aqui está um one-liner que deve sempre funcionar, independentemente do número total de arquivos, e independentemente de os nomes de arquivos conterem novas linhas incorporadas:
find /home/user -type f -size -100k -print0 | tar -c -z --null --files-from=- -f backup.tgz
O comando find
gera uma lista de nomes de arquivos com terminação nula para backup, e o comando tar
lê essa lista a partir do canal e cria o tarfile backup.tgz
.