¿Cómo copio un árbol de directorios pero no los archivos en Linux?

17

Quiero copiar unos 200 directorios y subdirectorios de una ubicación a otra, pero no quiero copiar los miles de archivos dentro de esos directorios. Estoy en Linux

Nota: no tengo suficiente espacio para copiar todo y luego eliminar todos los archivos.

Kyle West
fuente

Respuestas:

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

Otro enfoque es con find y mkdir :

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

Solo asegúrese de que TARGET ya exista o use la opción -p de mkdir.

Panos Rontogiannis
fuente
3

También puedes hacer:

find inputdir -type d | cpio -pdumv destdir

El poder de la simplicidad;)

Pilou
fuente
1

Del mismo modo, usando (GNU) tar:

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

Realmente no necesita el -print0en la línea de comando find o -0en la línea de comando rsync a menos que tenga nombres de archivo que contengan caracteres de nueva línea (lo cual es posible pero altamente improbable). Tar (y rsync, y cpio) leen los nombres de archivo línea por línea; el uso de un terminador NULL es principalmente útil con xargs, que normalmente lee nombres de archivos separados por espacios en blanco (y, por lo tanto, no maneja archivos / directorios con espacios en sus nombres sin ellos -0).

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

Copiaría todos los archivos con enlaces duros. Misma estructura, mismos permisos. (nota: enlaces duros, por lo que no se pierde almacenamiento).

SvennD
fuente
No es posible crear enlaces duros a través de los límites del sistema de archivos
MountainX-for-Monica
Es cierto, pero no se dijo que estaba en el sistema de archivos ...
SvennD
-1

ls -d * / @source: buscar. -type d -print0> dirs.txt @destination: xargs -0 mkdir -p

Esto hará que ambos comandos usen nulos como separadores en lugar de espacios en blanco. Tenga en cuenta que el orden de -type d y -print0 es importante!

Ashish Karpe
fuente
Esto no está claro y parece incorrecto. Parece que el @sourcey @destinationson indicaciones para el lector, pero aun así esto no puede funcionar.
Ley29