Normalmente, rsync
omite archivos cuando los archivos tienen tamaños y tiempos idénticos en los lados de origen y destino. Esta es una heurística que generalmente es una buena idea, ya que evita rsync
tener que examinar el contenido de los archivos que probablemente sean idénticos en los lados de origen y destino.
--ignore-times
le indica rsync
que desactive la heurística de tiempos y tamaños de archivo y, por lo tanto, transfiera incondicionalmente TODOS los archivos del origen al destino. rsync
luego procederá a leer cada archivo en el lado de origen, ya que necesitará usar su algoritmo de transferencia delta, o simplemente enviar cada archivo en su totalidad, dependiendo de si --whole-file
se especificó la opción.
--checksum
también modifica la heurística de tiempos y tamaños de archivo, pero aquí ignora los tiempos y examina solo los tamaños. Los archivos en los lados de origen y destino que difieren en tamaño se transfieren, ya que obviamente son diferentes. Los archivos con el mismo tamaño tienen una suma de verificación (con MD5 en la rsync
versión 3.0.0+, o con MD4 en versiones anteriores), y los que tienen sumas diferentes también se transfieren.
En los casos en que los lados de origen y destino son en su mayoría iguales, la --checksum
mayoría de los archivos se sumará a ambos lados. Esto podría llevar mucho tiempo, pero el resultado es que el mínimo mínimo de datos se transferirá realmente a través del cable, especialmente si se utiliza el algoritmo de transferencia delta. Por supuesto, esto es solo una victoria si tiene redes muy lentas y / o CPU muy rápida.
--ignore-times
, por otro lado, enviará más datos a través de la red y hará que se lean todos los archivos de origen, pero al menos no impondrá la carga adicional de calcular muchos hashsums criptográficamente fuertes en las CPU de origen y destino. Esperaría que esta opción funcione mejor que --checksum
cuando sus redes son rápidas y / o su CPU relativamente lenta.
Creo que solo lo usaría --checksum
o --ignore-times
si estuviera transfiriendo archivos a un destino donde se sospechaba que el contenido de algunos archivos estaba dañado, pero cuyos tiempos de modificación no cambiaron. Realmente no puedo pensar en ninguna otra buena razón para usar cualquiera de las opciones, aunque probablemente haya otros casos de uso.
--checksum
útil junto con--itemize-changes
para verificar las copias de seguridad. De vez en cuando, mis scripts de respaldo ejecutan una comparación completa de esta manera después de que se completan las actualizaciones diarias / semanales actuales. Recibo un correo electrónico marcado como urgente si--itemize-changes
muestra algo inesperado, así que sé que hay un problema potencial que debería investigar.--ignore-times
y especialmente--checksum
son necesarios si uno de sus "archivos" es un contenedor de archivos Truecrypt ya que, por defecto, la marca de tiempo del archivo no se actualiza. Vea productforums.google.com/forum/#!topic/drive/gnmDp3UXEgs y ask-leo.com/why_wont_my_truecrypt_volume_backup.html--checksum
suma de comprobación solo incluye los nombres de los archivos de origen en la máquina de destino o todos los archivos en el directorio de destino?La suma de comprobación también es útil si ha estado utilizando otro sistema para sincronizar archivos, que no ha conservado las marcas de tiempo. La suma de comprobación solo transferirá archivos que son diferentes Y actualizará todas las marcas de tiempo en el extremo receptor para que coincidan
fuente
Un detalle: la opción de suma de verificación verifica un archivo completo en un extremo, luego todo el archivo en el otro extremo. Si sus archivos son algo grandes, este tipo de paralelismo mata el paralelismo.
Además, si tiene archivos enormes, es más probable que se quede sin tiempo de espera
--checksum
, ya que no lo hace-I
.fuente
En
info rsync
lo que respecta a la--checksum
opción: "Dado que esta suma de comprobación de todo el archivo de todos los archivos en ambos lados de la conexión se produce además de las verificaciones de suma de comprobación automática que se producen durante la transferencia de un archivo, esta opción puede ser bastante lenta".fuente
La
--ignore-times
opción probablemente dará como resultado que todos los archivos estén codificados en delta y el algoritmo de transferencia delta (codificación delta) sea al menos tan lento como la suma de comprobación.No sé si rsync
--ignore-times
es lo suficientemente inteligente como para evitar la "verificación automática después de la transferencia" en el caso frecuente en que la transferencia delta no hará que se transfiera nada.Para
--ignore-times
:Tanto
--checksum
y--ignore-times
será "muy lenta", pero--ignore-times
es probable que incluso más lento (debido a las posibilidades anteriores 2).Buena pregunta: publique si encuentra diferencias de rendimiento en la práctica.
fuente