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?