Obtenga rsync para omitir archivos del mismo tamaño

Obtenga rsync para omitir archivos del mismo tamaño

Estoy usando el siguiente comando para copiar una gran cantidad de archivos de video grandes a unidades externas.

rsync -Ph --inplace /Volumes/Production/Prefix* Prefix

Tuvimos un corte de energía y la copia se interrumpió. Con rsync no hay problema en simplemente reiniciarlo, pero el problema es que tarda bastante en volver a donde estaba. Revisa cada archivo y parece que lee todo el archivo. Se informa que su velocidad es entre 3 y 5 veces más rápida de lo habitual, hasta que llega al punto en que comienza a copiar nuevamente.

¿Qué está haciendo exactamente durante este tiempo? ¿Está leyendo todo el archivo y comparándolo con la fuente? ¿O está haciendo algo más elegante? ¿Hay alguna manera de hacer que rsync omita archivos completados más rápido? Por ejemplo, ¿dígale que solo verifique los archivos que tengan un tamaño de archivo diferente o algo así?

Respuesta1

La causa de su problema no es agregar -t(o -a, que se incrusta -ty muchas otras opciones) en elanteriorejecución de rsync.

-tes necesario para preservar las horas de modificación del archivo al copiar, de modo que una vez copiado, la última hora de modificación del archivo de destino será la misma que la del archivo de origen. Sin esto, las ejecuciones posteriores de rsync no considerarán que ningún archivo de destino coincida con el origen y siempre los actualizarán.

Comportamiento de comparación de Rsync

De forma predeterminada, rsync omitirá un archivo de destino existente si la hora de su última modificación y el tamaño del archivo coinciden con los del archivo de origen.

Recuperándose de esto

Si está seguro de que ningún otro software ha modificado los archivos de destino mientras tanto y solo desea continuar, puede utilizar esta --size-onlyopción. Esto modifica el comportamiento de comparación de modo que rsync omitirá un archivo de destino existente si su tamaño coincide, sin verificar la hora de la última modificación.

El problema que tendrá en el futuro es que si desea sincronizar los directorios nuevamente, aún necesitará que los tiempos de modificación de los archivos coincidan, o deberá ignorar los tiempos de modificación y confiar en que los archivos no hayan sido modificados por otros. software (de manera que no cambie el tamaño).

Explicación de opciones.

  • Comparación de rsync predeterminada: si tanto el tamaño del archivo como la hora de la última modificación coinciden, omita.

  • --size-only: si los tamaños de los archivos coinciden, omita.

  • --ignore-times: nunca te saltes. Tiempos de archivoy tamañosson ignorados.

  • --checksum: si los tamaños de los archivos coinciden, calcule una suma de verificación de ambos archivos y, si coinciden, omita.

La --size-onlyopción hace que sea más probable que se omitan archivos, mientras que las opciones --ignore-timesy --checksumhacen que sea menos probable que se omitan archivos.

Respuesta2

rsyncTiene una opción: --size-onlyque hace lo que quieres.

Respuesta3

Rsync comprueba el tiempo de modificación y el tamaño de los archivos de forma predeterminada. Si agrega un --checksum, se comparará con todo el archivo (es decir, independientemente del tiempo de modificación y la coincidencia de tamaño).

Respuesta4

Como no hizo -a para el archivo, no copió los tiempos, por lo que piensa que son archivos diferentes debido a la discrepancia en la marca de tiempo, y luego suma la suma de verificación de todo el archivo.

Si estás haciendo copias donde la marca de tiempo podría/debería coincidir: incluye siempre -a.

Por ahora (aunque hace mucho) puedes intentar agregar--ignore-times

información relacionada