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

16

Eu quero copiar cerca de 200 diretórios e amp; subdiretórios de um local para outro, mas não quero copiar os milhares de arquivos nesses diretórios. Eu estou no Linux.

Observação: não tenho espaço suficiente para copiar tudo e, em seguida, excluo todos os arquivos.

    
por Kyle West 20.11.2010 / 22:29

8 respostas

25

Achei isso:

rsync -a -f"+ */" -f"- *" source/ destination/

link

    
por 20.11.2010 / 23:10
9
find some/dir -type d -print0 | rsync --files-from=/dev/stdin -0 ...
    
por 20.11.2010 / 22:33
5

Outra abordagem é com find e mkdir :

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

Assegure-se de que TARGET já exista ou use a opção -p do mkdir.

    
por 10.05.2014 / 14:10
3

Você também pode fazer:

find inputdir -type d | cpio -pdumv destdir

O poder da simplicidade;)

    
por 05.04.2011 / 11:37
1

Da mesma forma, usando (GNU) tar:

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 do -print0 na linha de comando de localização ou do -0 na linha de comando do rsync, a menos que você tenha nomes de arquivos que contenham caracteres de nova linha (o que é possível, mas altamente improvável). Tar (e rsync e cpio) leem nomes de arquivos linha por linha; usar um terminador NULL é bastante útil com xargs , que normalmente lê nomes de arquivos separados por espaços em branco (e, portanto, não manipula arquivos / diretórios com espaços em seus nomes sem -0 ).

    
por 20.11.2010 / 23:04
1
(cd /home/user/source/; find -type d -print0) | xargs -0 mkdir -p
    
por 29.07.2017 / 00:10
-1
cp -al 

Copia todos os arquivos com links físicos. Mesma estrutura, mesmas permissões. (nota: hard links, então nenhum armazenamento perdido).

    
por 17.11.2015 / 15:22
-1

ls -d * / @source: find. -tipo d -print0 > dirs.txt @destinação: xargs -0 mkdir -p

Isso fará com que ambos os comandos usem nulos como separadores em vez de espaços em branco. Note que a ordem de -type d -print0 é importante!

    
por 17.08.2016 / 10:54