Dada uma estrutura de árvore com arquivos, diga:
source
|-- bar
| +-- three.txt
|-- baz
| +-- four.txt
+-- foo
|-- one.txt
+-- two.txt
Se eu fizer
tar czvf dest/archive-1.tgz --listed-incremental dest/archive.snar source/*
Isso cria um arquivo .tgz
contendo todos os arquivos e pastas atuais, exatamente o que eu esperava:
source/bar/
source/baz/
source/foo/
source/bar/three.txt
source/baz/four.txt
source/foo/one.txt
source/foo/two.txt
Se eu fizer imediatamente:
tar czvf dest/archive-2.tgz --listed-incremental dest/archive.snar source/*
Isso parece criar o arquivo .tgz
contendo todas as subpastas do diretório atual, sem arquivos:
source/bar/
source/baz/
source/foo/
Isso não é o que eu quero. Em um exemplo de brinquedo como este, não é tão ruim, mas em uma estrutura de pastas grande torna muito mais difícil dizer que o .tgz é essencialmente vazio. É muito barulho. Idealmente, tar
me diria que não há arquivos atualizados e sair com um código de erro, mas mesmo se ele fizesse um tar vazio, seria melhor (para mim, neste caso) do que um arquivo com muito vazio pastas.
Existe alguma maneira de fazer com que tar --listed-incremental
se comporte como eu gostaria? Fiz algumas pesquisas para encontrar soluções, mas não encontrei muita coisa.
Eu posso acabar parando de usar --listed-incremental
e fazer algum trabalho com find
para montar uma lista de arquivos, mas isso é muito mais trabalhoso se houver uma maneira de fazer --listed-incremental
fazer o que eu quero. Alguma sugestão?