Quero copiar cerca de 200 diretórios e subdiretórios de um local para outro, mas não quero copiar os milhares de arquivos desses diretórios. Eu estou no Linux.
Nota: Não tenho espaço suficiente para copiar tudo e excluir todos os arquivos.
linux
command-line-interface
rsync
copy
Kyle West
fonte
fonte
rsync -a --include='*/' --exclude='*' ${source} ${destination}
.fonte
Outra abordagem é com find e mkdir :
Apenas verifique se o TARGET já existe ou use a opção -p do mkdir.
fonte
Você também pode fazer:
O poder da simplicidade;)
fonte
Da mesma forma, usando o tar (GNU):
Você realmente não precisa da
-print0
linha de comando on find ou da linha-0
rsync, a menos que tenha nomes de arquivos que contenham caracteres de nova linha (o que é possível, mas altamente improvável). Tar (e rsync e cpio) leem os nomes de arquivos linha por linha; o uso de um terminador NULL é bastante útilxargs
, que normalmente lê nomes de arquivos separados por espaços em branco (e, portanto, não lida com arquivos / diretórios com espaços em seus nomes sem-0
).fonte
fonte
Copiaria todos os arquivos com links físicos. Mesma estrutura, mesmas permissões. (nota: links físicos, para que não haja perda de armazenamento.)
fonte
ls -d * / @source: encontre. -type d -print0> dirs.txt @destination: xargs -0 mkdir -p
Isso fará com que ambos os comandos usem nulos como separadores em vez de espaços em branco. Observe que a ordem de -type de -print0 é importante!
fonte
@source
e@destination
são indicações para o leitor, mas mesmo assim isso não pode funcionar.