à primeira vista (sem a data do arquivo / diretório):
find data -type d -exec echo mkdir -p {} \; | ( cd tmp7 ; bash )
find data -type f -exec echo touch {} \; | ( cd tmp7 ; bash )
onde
- os dados são sua fonte
- tmp7 seu destino
Eu gostaria de criar um arquivo que captura toda a estrutura de um diretório, incluindo subdiretórios e arquivos. De preferência, preservando atributos de arquivo, como tempo de modificação. O arquivo não deve conter qualquer conteúdo de arquivos, no entanto.
Em outras palavras, o efeito que estou tentando alcançar é o mesmo que se eu criasse uma cópia exata do diretório, reduzisse os tamanhos de todos os arquivos para zero e, em seguida, arquivasse com tar
.
Eu olhei para várias opções de tar
e parece não suportar o que eu preciso. Eu pensei que haveria algo como --use-compress-program=true
, mas esse é aplicado a todo o arquivo, não a arquivos individuais, infelizmente. Eu também não vi nenhuma opção rsync
relevante.
Existe uma maneira de criar esse arquivo com a ferramenta unix?
à primeira vista (sem a data do arquivo / diretório):
find data -type d -exec echo mkdir -p {} \; | ( cd tmp7 ; bash )
find data -type f -exec echo touch {} \; | ( cd tmp7 ; bash )
onde
Essa pergunta é um pouco antiga e minha resposta não atende aos critérios de "ferramenta Unix", mas, pelo que vale, a ferramenta de sincronização do Windows Robocopy pode fazer isso com um simples switch / CREATE (ela cria o Toda a árvore de arquivos da origem para o destino, com 0 arquivos de comprimento, mas todos os registros de data e hora preservados, mesmo aqueles de diretórios, se a opção / DCOPY: T também for usada). Esse é um exemplo em que uma ferramenta do Windows pode facilmente fazer algum truque que aparentemente não é possível por meios simples em um sistema Linux / Unix.