Copiar una estructura de directorio profundamente anidada

Copiar una estructura de directorio profundamente anidada

Tengo que copiar una estructura de directorio a un nuevo host como parte de la migración de una aplicación. La estructura del directorio es la siguiente:

{10 - ff} / {00 - ff} / {00 - ff} (no incluido) / nombre de archivo único

Entonces hay millones de archivos. El tercer nivel del árbol no está completamente poblado y no todos los directorios del tercer nivel tienen un archivo.

a du tarda MUCHO tiempo en completarse incluso para una carpeta de segundo nivel. Usando alquitrán | nc tardaría 10 días. Puedo tener un corte de 1 día, pero no 10.

Respuesta1

Úselo rsyncpara esto.

  1. Antes de que tengas que pasar a utilizar el nuevo servidor, haz una revisión rsyncde todo el directorio de un host a otro. Por lo que parece, esto llevará mucho tiempo completarse.
  2. Una vez que se complete, ejecútelo rsyncnuevamente para detectar los archivos modificados durante el primer rsync.
  3. Continúe realizando ejecuciones periódicas rsynchasta que desee realizar la transición. Esto es sólo para mantener bajo el volumen de datos que deben transferirse.
  4. Realice una interrupción y detenga todas las escrituras en el servidor anterior.
  5. Realiza una últimarsync
  6. Inicie los servicios en el nuevo servidor.

Respuesta2

Si esta estructura de directorios es la mayor parte de los datos en su dispositivo/partición, ignore la estructura de directorios, si eso es lo que está causando el problema.

En su lugar, desmonte el dispositivo (o vuelva a montarlo en modo de solo lectura) y utilícelo dd(1)con netcat para copiar los bloques del sistema de archivos en una partición del mismo tamaño en el nuevo host.

Si hay datos superfluos fuera de la jerarquía que desea, elimínelos después de la migración.

También podría considerar extraer la unidad y conectarla al nuevo host si la red entre los hosts puede ser un cuello de botella.

Respuesta3

Para una copia única, y si puede tener el origen y el destino montados en el mismo sistema, puede hacerlo

find [source top dir] | cpio -dump [target mountpoint]

Copiará y preservará los atributos del archivo. También debería haber un parámetro de compresión en la herramienta cpio.

información relacionada