En Ubuntu, quiero copiar un archivo grande de mi disco duro a un disco extraíble rsync. Por alguna otra razón, la operación no puede completarse en una sola ejecución. Así que estoy tratando de descubrir cómo usar rsyncpara reanudar la copia del archivo desde donde lo dejó la última vez.
He intentado usar la opción --partialo --inplace, pero junto con --progress, encontré rsynccon --partialo --inplacerealmente comienza desde el principio en lugar de lo que quedó la última vez. Parar manualmente rsynctemprano y verificar el tamaño del archivo recibido también confirmó lo que encontré.
Pero con --append, rsync comienza desde lo que quedó la última vez.
Estoy confundido como vi en la página del manual --partial , --inplacey --appendparecen relacionarse con la reanudación de la copia de lo que quedaba última vez. ¿Alguien puede explicar la diferencia? ¿Por qué no --partialo --inplacetrabajar para reanudar la copia? ¿Es cierto que para reanudar la copia, rsynctiene que funcionar con la --appendopción?
Además, si rsync dejó un archivo parcial mvo cpno, ¿ rsync --appendreanudará correctamente la copia del archivo?

--appendhacersynccreer que, si dos archivos correspondientes tienen una longitud diferente, entonces el más corto es idéntico a la parte inicial del más largo. Entonces, sí, si comienza a copiar un archivo grandecpe interrumpe el proceso de copia,rsync --appendcopiará solo la parte restante del archivo. ( Nota: sicpse interrumpe un bloqueo del sistema, existe una pequeña posibilidad de que el contenido del archivo y los metadatos no estén sincronizados, es decir, el archivo está dañado. En este caso, la ejecuciónrsyncuna vez más sin--appendsolucionar el problema.)--partialsin--append.--appendy--append-verifytiene un caso de falla peligrosa: cuando el archivo del receptor es del mismo tamaño o más grande pero tiene datos diferentes. Sugiero una solución basada en su--no-whole-filelugar.Tenga en cuenta que eso
--appendimplica--inplace, lo que en sí mismo implica--partial.Con solo usarlo
--partial, debersyncdejar las transferencias parciales y reanudarlas en intentos posteriores.Al usarlo
--append, debersyncdejar ambos archivos parciales y reanudarlos la próxima vez. Después de la transferenciarsyncdebe verificar la suma de verificación de los datos transmitidos solamente--append-verifyincluye todo el archivo en la verificación de suma de verificación, incluida cualquier parte transferida en una transferencia anterior.Con cualquiera
--appendo con--append-verifyuna verificación de suma de verificación fallida, el archivo se retransmitirá completamente (usando--inplace)Debería poder reanudar una operación
mvucpoperación,rsyncpero es posible que desee utilizar la--append-verifyopción para su tranquilidad.Tenga en cuenta que el uso
--appendcausarsyncque solo se copien aquellos archivos que tienen un tamaño en el receptor más corto que el tamaño en el remitente (independientemente de las marcas de tiempo) o que están ausentes en el receptor. Por documentación sobre esta opción:Más información en la página del manual
fuente
--appendy--append-verifytiene un caso de falla peligrosa: cuando el archivo del receptor es del mismo tamaño o más grande pero tiene datos diferentes. Sugiero una solución basada en su--no-whole-filelugar.--checksumdebe usarse. No puedo encontrarlo especificado explícitamente, pero lógicamente cualquiera de las opciones para reanudar debería implicar--no-whole-fileporque--whole-filedebería ser incompatible.--append-verifyomitirá archivos del mismo tamaño o de mayor tamaño con fechas diferentes , lo que puede ser "inesperado". No hay necesidad de--checksumtodos los archivos, yarsyncque de todos modos hará una suma de comprobación de archivo completo, pero solo en lo que transfiere.--checksumle indicarsynca la suma de comprobación los archivos antes del envío, lo que garantiza que todos los archivos modificados se transfieran, independientemente del tamaño / tiempo. ¿Tiene una fuente para el--append-verifycomportamiento inesperado ya que lo que describe no coincide con la documentación o mi experiencia (limitada)?--append-verifyse refiere a lo--appendque dice:If a file needs to be transferred and its size on the receiver is the same or longer than the size on the sender, the file is skipped.Incluso si un archivo necesita ser transferido debido a--checksumello, aún puede omitirse.David Schwartz tiene razón,
--partial(o mejor,-P) hace lo que quieres. Verifiqué esto en un archivo 37G que se detuvo ~ 8g en él, a través de una red. rsync escaneó rápidamente las primeras partes del parcial (mostrando el progreso a medida que avanzaba-P), y luego reanudó la transferencia al final del archivo parcial.fuente
--whole-filedescripción de la opción.--no-W(¡que realmente funciona!)--no-Wmenos que comprenda exactamente qué configuración significa para los archivos locales. Ver unix.stackexchange.com/a/181018/100397Lo estabas haciendo bien,
--partialhace lo que quieres. Parece estar comenzando desde el principio porque siempre comienza al principio de la lista de fragmentos de datos de archivo que necesita copiar. La--appendopción es peligrosa y dará como resultado un archivo corrupto si los datos no coinciden por alguna razón.fuente
--appendcontinúan desde el desplazamiento de bytes).Por defecto,
rsyncse habilitará--whole-filesi se transfiere del disco local al disco local. Esto reiniciará una transferencia interrumpida desde el principio, en lugar de verificar las partes que ya están allí.Para deshabilitar esto, use:
La combinación de esto con
--inplaceo--partialpermitirá reanudar la transferencia más tarde.Mi alias para usar
rsyncpara copiar es:Advertencia : tenga cuidado de usarlo,
--append-verifyya que omitirá cualquier archivo de destino que sea del mismo tamaño o más grande.fuente
rsynccompara los archivos de origen y de destino correspondientes antes de la transferencia para enviar solo aquellas partes que han cambiado (transferencia delta).--no-whole-filele dicersyncque haga lo mismo para la copia local a local. La documentación no sugiere que tendría ningún efecto en la reanudación de transferencias parciales de archivos individuales.rsyncsaltará los archivos con exactamente el mismo tamaño y marcas de tiempo por diseño. Ni--append-verifytampoco--no-whole-filedebería cambiar ese comportamiento, pero--checksumdebería funcionar con cualquiera de ellos para su tranquilidad a costa del disco IO--append-verifyomitirá archivos del mismo tamaño o de mayor tamaño con fechas diferentes , lo que puede ser "inesperado". No hay necesidad de--checksumtodos los archivos, yarsyncque de todos modos hará una suma de comprobación de archivo completo, pero solo en lo que transfiere.