Espero que esto no cuenta como una pregunta sin una respuesta real, ya que parece que no puede encontrar una buena razón para usar cp(1)
durante rsync(1)
prácticamente en todas las circunstancias. ¿Debería uno preferir rsync
más cp
? ¿Hay alguna buena directriz para su uso?
rsync
: Transfiere los diferenciales, puede usar compresión, puede usarse de forma remota (y segura), puede reiniciarse a pesar de una interrupción, incluso durante la transferencia de un solo archivo grande. 'cp
: ¿Quizás es más simple de usar? ¿Es más rápido que rsync?
Respuestas:
cp
es parte de coreutils, por lo tanto, está presente en todas partes. Además, se diseñó principalmente para copiar archivos dentro de una computadora.rsync
no es parte de coreutils, ni siquiera está presente en el entorno predeterminado. Además, fue diseñado principalmente para transferir archivos a través de la red. Tambiénrsync
tiene más dependencias en comparación con coreutils, sin embargo, esta diferencia no tiene mucho sentido.PD: Por cierto, el uso de la CPU sigue siendo importante en los sistemas integrados.
fuente
La razón principal por la que no desea utilizar
rsync
para cada operación de copia es porquersync
tiene una sobrecarga de cálculo. Antes de que la transferencia de datos realmente comience,rsync
escanea todos los archivos. Luego, antes de cada archivo, se realiza una comparación. Esta sobrecarga no es insignificante, incluso con las CPU rápidas disponibles en 2012. Realizo este tipo de transferencias todo el tiempo, y en servidores de tamaño bastante decente, una vez que comienzas a tratar con grandes cantidades de datos, la sobrecarga puede llevar mucho tiempo.No digo que no use
rsync
, en absoluto, use enrsync
cualquier momento que pueda ahorrar algo de tiempo de transferencia. Simplemente no usersync
cuándocp
podría lograr lo mismo.Lo que generalmente hago, primero trae los datos usando métodos de copia regulares. Luego,
rsync
para los cambios posteriores, que es cuando esas diferencias se pueden aprovechar.fuente
Esperaría
cp
usar menos CPU cuando copie localmente porque no usa diffs, mientras quersync
puede reducir las escrituras cuando usa diffs. La compresión debe evitarse localmente porque tiene que leer y escribir todo el archivo / diff de todos modos y requiere cálculos adicionales.fuente
rsync
se prefiere. Pero cuando no hay diferencia,rsync
solo trae gastos generales sin beneficio adicional.rsync
tener el doble de sobrecarga de E / S para dos archivos idénticos en comparación con el ocultocp
: un tiempo de modificación modificado. Tendrías que dar--size-only
para arreglar esto. La única otra forma en que puedo ver esto seríarsync
confiar en las sumas de verificación del sistema de archivos, pero para la mayoría de los sistemas de archivos no son muy buenos predictores estadísticos de identidad.Aparte de los gastos generales en el caso de una diferencia grande o inexistente,
rsync
no parece tener un equivalente decp --reflink=always
, lo que puede ahorrar una enorme cantidad de datos si se copia dentro de un sistema de archivos que lo admite (crea copias de copia en escritura, por lo que los datos en común entre el original y la copia (que es, por supuesto, inicialmente todo) se almacenan solo una vez).rsync
Sin embargo, es mejor para actualizar las copias de CoW, utilizando--inplace
.fuente