Como copio uma árvore de diretórios, mas não os arquivos no Linux?

17

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.

Kyle West
fonte

Respostas:

9
find some/dir -type d -print0 | rsync --files-from=/dev/stdin -0 ...
Ignacio Vazquez-Abrams
fonte
5

Outra abordagem é com find e mkdir :

find SOURCE -type d -exec mkdir TARGET/{} \;

Apenas verifique se o TARGET já existe ou use a opção -p do mkdir.

Panos Rontogiannis
fonte
3

Você também pode fazer:

find inputdir -type d | cpio -pdumv destdir

O poder da simplicidade;)

Pilou
fonte
1

Da mesma forma, usando o tar (GNU):

find some/dir -type d -print |
tar --no-recursion -T- -c -p -f- |
(cd another/dir && tar -x -p -f-)

Você realmente não precisa da -print0linha de comando on find ou da linha -0rsync, 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 útil xargs, 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).

larsks
fonte
1
(cd /home/user/source/; find -type d -print0) | xargs -0 mkdir -p
SergioAraujo
fonte
-1
cp -al 

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.)

SvennD
fonte
Não é possível criar ligações fortes através das fronteiras do sistema de arquivos
MountainX para Monica Cellio
É verdade, mas que não foi dito que ele estava do outro lado do sistema de arquivos ...
SvennD
-1

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!

Ashish Karpe
fonte
Isso não está claro e parece incorreto. Parece que @sourcee @destinationsão indicações para o leitor, mas mesmo assim isso não pode funcionar.
precisa saber é o seguinte