cómo crear directorios de Linux y una estructura de subdirectorios sin archivos

cómo crear directorios de Linux y una estructura de subdirectorios sin archivos

Tengo el requisito de crear una imagen reflejada de los directorios y subdirectorios de carpetas de Linux existentes como se muestra a continuación.

tenemos el directorio "/opt/current" que tiene otra capa de 20 subdirectorios y una capa más con 50 subdirectorios y así sucesivamente... algunas capas más profundas para subdirectorios y en total tenemos 1000 directorios de padre a hijo. /opt/current está montado en el dispositivo Oracle ZFS.

Cómo crear una estructura exacta de directorios/subdirectorios espejo en una nueva ubicación /opt/New, no manualmente como directorio uno a uno y aplicar permisos. /opt/New está montado en otro dispositivo ZFS.

¿Existe alguna manera/script de crear una estructura de directorio completa de padre a hijo con el mismo propietario/grupo/otro permiso en /opt/Nueva ruta que en /opt/actual ruta?

gracias, cg

Respuesta1

rsync -av --include='*/' --exclude='*' /opt/current/ /opt/New

Esto se utilizaría rsyncpara duplicar exactamente la estructura de directorios /opt/localy /opt/Newevitar copiar cualquier archivo.

La -aopción ( --archive) aseguraría que se conserven todos los permisos, etc. (esta opción también implica una copia recursiva), y -v( --verbose) le daría una indicación del progreso del comando.

Con --include='*/'incluimos explícitamente cualquier directorio en la transferencia, pero excluimos todo lo demás con --exclude='*'. El orden de estas opciones en la línea de comando es importante.

El /final de /opt/current/también es importante, ya que sin él, el resultado sería crear /opt/New/currenten lugar de escribir /opt/Newdirectamente.

Respuesta2

POSIXly y asumiendo que los nombres de directorio no contienen caracteres de nueva línea y $srcdirson $dstdirrutas absolutas:

(cd -P "$srcdir" && find . -type d | pax -rwdpe "$dstdir/")

Algunas paximplementaciones admiten la obtención de listas de archivos delimitadas por NUL para copiar con una -0opción para permitir nombres de archivos con NUL:

(cd -P "$srcdir" && find . -type d -print0 | pax -0rwdpe "$dstdir/")

( -print0también es una extensión que no es POSIX).

Respuesta3

Alternativamente arsync

find /opt/current -type d -print0 | cpio -0pma backup/dir/

Respuesta4

Puedes crear un script como el siguiente... ponerlo en un archivo:

-- La sintaxis del script bash/ksh deberá cambiar dependiendo del shell ----

find . -name "*"|while read line
do
        if [[ -d ${line} ]]
        then 
                echo ${line}
        fi
do

en el servidor estás haciendo el archivo

cat file |while read line
do
mkdir ${line}
done

información relacionada