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 rsync
para reanudar la copia del archivo desde donde lo dejó la última vez.
He intentado usar la opción --partial
o --inplace
, pero junto con --progress
, encontré rsync
con --partial
o --inplace
realmente comienza desde el principio en lugar de lo que quedó la última vez. Parar manualmente rsync
temprano 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
, --inplace
y --append
parecen relacionarse con la reanudación de la copia de lo que quedaba última vez. ¿Alguien puede explicar la diferencia? ¿Por qué no --partial
o --inplace
trabajar para reanudar la copia? ¿Es cierto que para reanudar la copia, rsync
tiene que funcionar con la --append
opción?
Además, si rsync dejó un archivo parcial mv
o cp
no, ¿ rsync --append
reanudará correctamente la copia del archivo?
--append
hacersync
creer 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 grandecp
e interrumpe el proceso de copia,rsync --append
copiará solo la parte restante del archivo. ( Nota: sicp
se 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ónrsync
una vez más sin--append
solucionar el problema.)--partial
sin--append
.--append
y--append-verify
tiene 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-file
lugar.Tenga en cuenta que eso
--append
implica--inplace
, lo que en sí mismo implica--partial
.Con solo usarlo
--partial
, debersync
dejar las transferencias parciales y reanudarlas en intentos posteriores.Al usarlo
--append
, debersync
dejar ambos archivos parciales y reanudarlos la próxima vez. Después de la transferenciarsync
debe verificar la suma de verificación de los datos transmitidos solamente--append-verify
incluye todo el archivo en la verificación de suma de verificación, incluida cualquier parte transferida en una transferencia anterior.Con cualquiera
--append
o con--append-verify
una verificación de suma de verificación fallida, el archivo se retransmitirá completamente (usando--inplace
)Debería poder reanudar una operación
mv
ucp
operación,rsync
pero es posible que desee utilizar la--append-verify
opción para su tranquilidad.Tenga en cuenta que el uso
--append
causarsync
que 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
--append
y--append-verify
tiene 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-file
lugar.--checksum
debe usarse. No puedo encontrarlo especificado explícitamente, pero lógicamente cualquiera de las opciones para reanudar debería implicar--no-whole-file
porque--whole-file
debería ser incompatible.--append-verify
omitirá archivos del mismo tamaño o de mayor tamaño con fechas diferentes , lo que puede ser "inesperado". No hay necesidad de--checksum
todos los archivos, yarsync
que de todos modos hará una suma de comprobación de archivo completo, pero solo en lo que transfiere.--checksum
le indicarsync
a 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-verify
comportamiento inesperado ya que lo que describe no coincide con la documentación o mi experiencia (limitada)?--append-verify
se refiere a lo--append
que 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--checksum
ello, 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-file
descripción de la opción.--no-W
(¡que realmente funciona!)--no-W
menos que comprenda exactamente qué configuración significa para los archivos locales. Ver unix.stackexchange.com/a/181018/100397Lo estabas haciendo bien,
--partial
hace 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--append
opción es peligrosa y dará como resultado un archivo corrupto si los datos no coinciden por alguna razón.fuente
--append
continúan desde el desplazamiento de bytes).Por defecto,
rsync
se habilitará--whole-file
si 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
--inplace
o--partial
permitirá reanudar la transferencia más tarde.Mi alias para usar
rsync
para copiar es:Advertencia : tenga cuidado de usarlo,
--append-verify
ya que omitirá cualquier archivo de destino que sea del mismo tamaño o más grande.fuente
rsync
compara los archivos de origen y de destino correspondientes antes de la transferencia para enviar solo aquellas partes que han cambiado (transferencia delta).--no-whole-file
le dicersync
que 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.rsync
saltará los archivos con exactamente el mismo tamaño y marcas de tiempo por diseño. Ni--append-verify
tampoco--no-whole-file
debería cambiar ese comportamiento, pero--checksum
debería funcionar con cualquiera de ellos para su tranquilidad a costa del disco IO--append-verify
omitirá archivos del mismo tamaño o de mayor tamaño con fechas diferentes , lo que puede ser "inesperado". No hay necesidad de--checksum
todos los archivos, yarsync
que de todos modos hará una suma de comprobación de archivo completo, pero solo en lo que transfiere.