GNU/Linux >> Tutoriales Linux >  >> Linux

¿Transferencias de archivos más inteligentes que Rsync?

Cerrado . Esta pregunta necesita detalles o claridad. Actualmente no está aceptando respuestas.

¿Quieres mejorar esta pregunta? Agrega detalles y aclara el problema editando esta publicación.

Cerrado hace 6 años.


Mejorar esta pregunta

Tengo un archivo grande (2-3 GB, binario, formato no documentado) que uso en dos computadoras diferentes (normalmente lo uso en un sistema de escritorio pero cuando viajo lo pongo en mi computadora portátil). Uso rsync para transferir este archivo de un lado a otro.

Hago pequeñas actualizaciones a este archivo de vez en cuando, cambiando menos de 100 kB. Esto sucede en ambos sistemas.

Según tengo entendido, el problema con rsync es que si cree que un archivo ha cambiado entre el origen y el destino, transfiere el archivo completo. En mi situación, se siente como una gran pérdida de tiempo cuando solo una pequeña parte de un archivo tiene cambios. Preveo un protocolo en el que los agentes de transferencia en origen y destino primero verifiquen todo el archivo y luego comparen el resultado. Cuando se dan cuenta de que la suma de comprobación de todo el archivo es diferente, dividen el archivo en dos partes, A y B, y las suman por separado.

Ajá, B es idéntico en ambas máquinas, ignoremos esa mitad. Ahora divide A en A1 y A2. Ok, solo A2 ha cambiado. Divida A2 en A2I y A2II y compare, etc. Haga esto recursivamente hasta que encuentre, por ejemplo, tres partes de 1 MB cada una que difieren entre el origen y el destino y luego transfiera solo estas partes e insértelas en la posición correcta en el archivo de destino. Hoy en día, con SSD rápidos y CPU multinúcleo, dicha paralelización debería ser muy eficiente.

Así que mi pregunta es, ¿hay alguna herramienta que funcione así (o de otra manera que no podía imaginar pero con un resultado similar) disponible hoy en día?

Se ha publicado una solicitud de aclaración. Principalmente uso Mac, por lo que el sistema de archivos es HFS+. Normalmente empiezo rsync así

rsync -av --delete --progress --stats – en estos casos, a veces uso SSH y, a veces, rsyncd. Cuando uso rsyncd lo comienzo así rsync --daemon --verbose --no-detach .

Segunda aclaración:solicito una herramienta que solo transfiera el delta de un archivo que existe en dos ubicaciones con pequeños cambios y/o si rsync realmente ofrece esto. Mi experiencia con rsync es que transfiere los archivos en su totalidad (pero ahora hay una respuesta que explica esto:rsync necesita un servidor rsync para poder transferir solo los deltas, de lo contrario (por ejemplo, usando ssh-shell) transfiere todo archivo por mucho que haya cambiado).

Relacionado:¿Cuándo usaría un descriptor de archivo adicional?

Respuesta aceptada:

Rsync no utilizará deltas, pero transmitirá el archivo completo en su totalidad si, como un solo proceso, es responsable de los archivos de origen y destino. Puede transmitir deltas cuando hay un proceso de servidor y cliente separado ejecutándose en las máquinas de origen y destino.

La razón por la que rsync no enviará deltas cuando es el único proceso es que, para determinar si necesita enviar un delta, necesita leer los archivos de origen y de destino. Para cuando termine, es posible que haya copiado el archivo directamente.

Si está utilizando un comando de este formulario, solo tiene un proceso rsync:

rsync /path/to/local/file /network/path/to/remote/file

Si está usando un comando de esta forma, tiene dos procesos rsync (uno en el host local y otro en el remoto) y se pueden usar deltas:

rsync /path/to/local/file remote_host:/path/to/remote/file

Linux
  1. ¿Compara directorios pero no contenido de archivos?

  2. ¿Es>&- más eficiente que>/dev/null?

  3. Rsync ¿Dos tipos de archivos en un solo comando?

  4. ¿Cómo podemos almacenar una contraseña que no sea texto sin formato?

  5. ¿Cómo RSYNC un solo archivo?

¿Es seguro usar Rsync mientras se actualiza la fuente?

¿Por qué usar Install en lugar de Cp y Mkdir?

RSync:¿Cómo sincronizo en ambas direcciones?

¿Hay alguna manera de reanudar un scp interrumpido de un archivo?

Reanudar la transferencia de un solo archivo por rsync

Montaje de un sistema de archivos a través de Internet