Interrumpiendo rsync con ctrl-c, ¿debería usar `--partial` o` --append`?

14

Me gustaría interrumpir rsynccon ctrl-c(digamos después de que se haya transferido la mitad del archivo) y reanudar sin tener que reenviar los datos que ya se han transferido.

La información de stackexchange / google que he encontrado parece contradictoria. Encontré algunos que dicen usar --partialy otros que dicen usar --append. Para mí, parece que ambos funcionarían.

Si quiero interrumpir rsync con ctrl-c, ¿debo usar --partialo --append?

Si ambos funcionarían, ¿cuándo es mejor usar uno frente al otro?

Trevor Boyd Smith
fuente

Respuestas:

8

Para reiniciar, --partiales suficiente. Úselo --inplacesi realmente no desea rsynccrear un archivo temporal que combine los datos copiados existentes y los nuevos, por ejemplo, si rsynctendrá problemas de permisos para crear un archivo temporal en la carpeta de destino.

Úselo solo --appendsi puede garantizar que los datos parcialmente copiados siguen siendo idénticos a la fuente. (Generalmente, esta es una falsa optimización).

roaima
fuente
1
así que cuando uso las opciones anteriores (en realidad usando --append-verificar) y rsync todavía afirma que está comenzando desde el principio, y no veo ningún cambio en el tamaño del archivo y el tiempo restante del archivo es el que era originalmente cuando comencé la copia, ¿está mintiendo rsync o debería preocuparme?
Michael
@Michael si tiene una fuente y un destino local, todas las reglas cambian.
roaima
Lo estaba haciendo a través de la LAN, pero después de experimentar un poco más, parece que el problema es que, dado que en --append-verifyrealidad tiene que leer las partes del archivo en ambos lados, no es más rápido debido al cuello de botella. siendo una unidad más antigua en el lado de lectura y no la LAN en sí.
Michael
@Michael bueno, sí, si has solicitado la verificación de los datos ya transmitidos, ¡entonces tiene que leer los datos!
roaima
1
@alper Nunca he notado esa opción antes. Parece que sería mejor usarlo --partial-dir, pero aún no lo he probado.
roaima
3
  • --append presume que el archivo ya puede existir en el destino, solo hace que rsync no verifique el contenido que ya está allí (pero vea a continuación).
  • --partial le dice a rsync que no elimine los archivos transferidos parcialmente.

También necesitará --inplacecon --partial(está implícito con --append).

Resulta que en --inplacerealidad implica --partial, por eso --appendes suficiente (implica lo --inplaceque implica --partial). Pero por --partialsí solo no es suficiente, lo que necesita --inplace, de lo contrario, rsync crea archivos temporales en lugar de actualizar el último.

spuk
fuente
Si quisiera interrumpir rsync con ctrl-c, ¿usaría --append? Porque --partialpor sí solo no se reanudaría.
Trevor Boyd Smith
Que haría uso justo --inplace. rsync "siempre se reanuda" (intenta transferir los datos mínimos necesarios). Lo que --appendhace es decirle a rsync que no compruebe los datos que ya están en el destino, por lo que si el archivo parcial en el destino se ha dañado, permanecerá dañado --append. --appendpuede ser interesante si, por ejemplo, el archivo parcial es muy grande y no puede esperar (y está seguro o no le importa si está dañado), o alguna otra situación específica.
Spuk
1
en Fedora 20 man rsyncla opción --appenddice... Implies --inplace
Trevor Boyd Smith
1
--inplacetrabajará. --appendfuncionará porque (como dije en la respuesta) implica --inplace, lo que implica --partial(que mantendrá archivos parcialmente transferidos cuando sea interrumpido por Ctrl-c, que era la pregunta original). Así que --appendsignifica "hacer como --inplace, pero no suma de comprobación de lo que ya está en el destino Es una diferencia importante Si no se preocupan por ella, ya sea uso...
spuk
1
entonces, ¿qué sentido tiene --partial SIN? --inplace
Evan Carroll