4 votos

Rsync sigue copiando el mismo archivo

He utilizado rsync durante muchos años entre sistemas de archivos linux sin ningún problema con un comportamiento muy determinista. Ahora intento usarlo en mac y experimento algún problema de que algunos archivos (una pequeña proporción de mis 600000 archivos) se copian una y otra vez.

Esto es lo que he probado:

  1. Pasar de rsync 2.6.9 de MacOS a rsync 3.1.3 (de brew) no resolvió el problema.

  2. Dar un gran intervalo de tiempo para evitar una posible desviación del reloj no resolvió el problema.

  3. He visto en otras respuestas que un posible problema es el utf-8 vs utf-8-mac personajes. Entiendo que puede ser un problema pero estoy dispuesto a aceptar nombres de archivos ascii con el fin de que convivan linux y mac. Los archivos en cuestión tienen nombres de archivo ASCII.

Lo extraño es que este comportamiento inesperado es completamente determinista. El mismo archivo ListDebug/ForDEBUG se copia una y otra vez. Sin embargo, el archivo ListDebug/ForDEBUG2 que está al lado no fue copiado una y otra vez.

Cualquier indicación sobre el origen de este extraño comportamiento sería muy bienvenida.

EDIT: He encontrado algo más de información al copiar sólo el directorio ListDebug . Cuando ejecuto rsync -vadi -e ssh remote:ListDebug . Me sale

mathieu@MacBook-Pro: rsync -vadi -e ssh remote:ListDebug .
>f.st......... ListDebug/ForDebug
mathieu@MacBook-Pro: rsync -vadi -e ssh remote:ListDebug .
>f.st......... ListDebug/ForDEBUG
mathieu@MacBook-Pro: rsync -vadi -e ssh remote:ListDebug .
>f.st......... ListDebug/ForDebug

Por lo tanto, hay una cierta oscilación entre una impresión y otra. Eso suena realmente extraño y es un error.

EDIT2: El archivo ListDebug/ForDebug se copia pero se convierte en el nombre ListDebug/ForDEBUG y el archivo ParaDEBUG nunca se copia.

EDIT3: Si cambio el contenido de ForDebug/ForDEBUG a algo estándar como TEST1 , TEST2 entonces el error permanece. Por otro lado, si cambio el nombre de los archivos ForDebug/ForDEBUG a file1/file2 entonces el error desaparece. Ve

6voto

meuh Puntos 146

Para resumir los comentarios: rsync no maneja la transferencia de archivos entre un sistema de archivos que distingue entre mayúsculas y minúsculas (típicamente usado en Unix/Linux), y un sistema de archivos que no distingue entre mayúsculas y minúsculas (típicamente usado por Windows y MacOS).

Cuando dos rutas de origen diferentes (por ejemplo d/x y d/X ) son los mismos después de la conversión nocional a, por ejemplo, minúsculas, entonces rsync no se da cuenta, y puede transferir d/x y luego sobrescribir el mismo archivo de destino con d/X . Si los archivos no contienen los mismos datos y tienen la misma marca de tiempo, los archivos se actualizarán siempre en futuras ejecuciones de rsync.

No parece haber ninguna solución propuesta por rsync. Uno puede identificar los problemas potenciales revisando los archivos de origen para enumerar las ambigüedades :

find . | tr '[:upper:]' '[:lower:]' | LC_ALL=C sort | LC_ALL=C uniq -d

Alternativamente, un destino que distinga entre mayúsculas y minúsculas puede ser creado .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X