¿Rsync sobre el límite de profundidad de la carpeta ssh?

¿Rsync sobre el límite de profundidad de la carpeta ssh?

Estoy trabajando en una migración de servidor y me encuentro con el siguiente problema:

Estoy ejecutando rsync para migrar todos los datos, pero por alguna razón hay un límite de profundidad de carpeta... Esto se hace mediante el comando rsync over ssh:

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt' /home 192.168.70.50:/

70.50 es el nuevo servidor y estoy ejecutando el comando en el servidor anterior. Las estructuras de carpetas son extremadamente profundas, hasta 20 carpetas.

Por lo tanto, la mayoría de los archivos y carpetas se copian, pero no todos los de profundidad de carpeta 10 o superior. Si especifico carpetas más profundas

rsync -raz --verbose --update --delete --exclude-from 'rsync-exclude.txt'/home/user/blablabla/domain/web to 192.168.70.50:/home/user/blablabla/domain

comienza a copiar las carpetas restantes de forma recursiva...

¿Alguien que pueda tener una solución para esto?

Respuesta1

rsync no tiene límite en la profundidad de los subdirectorios que atravesará. Más concretamente, supera el límite del sistema de archivos de Linux. Simplemente copié algo que tenía aproximadamente 500 niveles de profundidad y rsync lo copió muy bien.

Si tiene este problema, verifique lo siguiente:

  • ¿El sistema de archivos de destino es incapaz de manejar tantos subdirectorios?
  • ¿Está lleno el destino?
  • ¿El archivo --exclude-from especifica algo que restringe los archivos?
  • ¿La longitud total de la ruta ("d/d/d/d" tiene 4 niveles pero 7 caracteres) está más allá de lo que permite el sistema de archivos?
  • ¿Desactivar la recursividad incremental hace que funcione? --no-inc-recursive(este es un algoritmo más nuevo y es posible que haya descubierto un error)
  • ¿La copia funciona usando alguna otra técnica?
  • ¿El problema desaparece con (o sin) compresión?-z

Aquí tienes otra técnica que puedes probar. Si funciona, pero rsyncno funciona, es posible que haya encontrado un error en rsync:

Esto enviará tarlos archivos de un lado, enviará el archivo tar a la salida estándar, ssh al otro lado y descomprimirá los archivos allí.

SOURCEDIR=/path/to/source
DESTHOST=machinename
DESTDIR=/path/to/destination
cd "$SOURCEDIR" && tar -c -v -f - . | ssh "$DESTHOST" "cd $DESTDIR && tar -x -p -f -"

Advertencia: Si $DESTDIR tiene espacios o caracteres especiales, será necesario citar con más cuidado lo anterior.

información relacionada