linux - txt - Copie la estructura de carpetas(sin archivos) de una ubicación a otra
copiar contenido de una carpeta a otra linux (11)
Aquí hay una solución simple usando rsync:
rsync -av -f"+ */" -f"- *" "$source" "$target"
- una línea
- sin problemas con espacios
- preservar permisos
Quiero crear un clon de la estructura de nuestro servidor de archivos multiterabyte. Sé que cp --parents puede mover un archivo y su estructura padre, pero ¿hay alguna forma de copiar la estructura del directorio intacta?
Quiero copiar a un sistema Linux y nuestro servidor de archivos está montado en CIFS allí.
Esto copia los atributos de directorios y archivos, pero no los datos de los archivos:
cp -R --attributes-only SOURCE DEST
Luego puede eliminar los atributos de los archivos si no está interesado en ellos:
find DEST -type f -exec rm {} /;
Esto funciona:
find ./<SOURCE_DIR>/ -type d | sed ''s//.//<SOURCE_DIR>//g'' | xargs -I {} mkdir -p <DEST_DIR>"/{}"
Simplemente reemplace SOURCE_DIR y DEST_DIR.
Esto resuelve incluso el problema con espacios en blanco:
En el directorio original / fuente:
find . -type d -exec echo "''{}''" /; > dirs2.txt
luego recípalo en el directorio recién creado:
mkdir -p <../<SOURCEDIR>/dirs2.txt
La siguiente solución funcionó bien para mí en varios entornos:
sourceDir="some/directory"
targetDir="any/other/directory"
find "$sourceDir" -type d | sed -e "s?$sourceDir?$targetDir?" | xargs mkdir -p
No sé si estás buscando una solución en Linux. Si es así, puedes intentar esto:
$ mkdir destdir
$ cd sourcedir
$ find . -type d | cpio -pdvm destdir
Podrías hacer algo como:
find . -type d >dirs.txt
para crear la lista de directorios, luego
xargs mkdir -p <dirs.txt
para crear los directorios en el destino
Si puede obtener acceso desde una máquina con Windows, puede usar xcopy con / T y / E para copiar solo la estructura de la carpeta (la / E incluye las carpetas vacías)
[¡EDITAR!]
Éste usa rsync para recrear la estructura del directorio pero sin los archivos. http://psung.blogspot.com/2008/05/copying-directory-trees-with-rsync.html
En realidad podría ser mejor :)
Sustituye target_dir
y source_dir
con los valores adecuados:
cd target_dir && (cd source_dir; find . -type d ! -name .) | xargs -i mkdir -p "{}"
Probado en OSX + Ubuntu.
Un script python de Sergiy Kolodyazhnyy publicado en Copy only folders not files? :
#!/usr/bin/env python
import os,sys
dirs=[ r for r,s,f in os.walk(".") if r != "."]
for i in dirs:
os.makedirs(os.path.join(sys.argv[1],i))
o desde el caparazón:
python -c ''import os,sys;dirs=[ r for r,s,f in os.walk(".") if r != "."];[os.makedirs(os.path.join(sys.argv[1],i)) for i in dirs]'' ~/new_destination
FYI:
cd /path/to/directories &&
find . -type d -exec mkdir -p -- /path/to/backup/{} /;