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.
linux
command-line-interface
rsync
copy
Kyle West
fuente
fuente
rsync -a --include='*/' --exclude='*' ${source} ${destination}
.fuente
Otro enfoque es con find y mkdir :
Solo asegúrese de que TARGET ya exista o use la opción -p de mkdir.
fuente
También puedes hacer:
El poder de la simplicidad;)
fuente
Del mismo modo, usando (GNU) tar:
Realmente no necesita el
-print0
en la línea de comando find o-0
en 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 conxargs
, 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
).fuente
fuente
Copiaría todos los archivos con enlaces duros. Misma estructura, mismos permisos. (nota: enlaces duros, por lo que no se pierde almacenamiento).
fuente
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!
fuente
@source
y@destination
son indicaciones para el lector, pero aun así esto no puede funcionar.