Comando Copiar o rsync


El siguiente comando funciona como se espera...

cp -ur /home/abc/* /mnt/windowsabc/

¿rsync tiene alguna ventaja sobre él? ¿Hay una mejor manera de mantener la carpeta de copia de seguridad sincronizada cada 24 horas?

 51
Author: shantanuo, 2011-06-14

5 answers

Rsync es mejor ya que solo copiará las partes actualizadas del archivo actualizado, en lugar de todo el archivo. También utiliza compresión y cifrado si lo desea. Echa un vistazo a este tutorial .

 42
Author: marchica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-14 05:08:47

Rsync no es necesariamente más eficiente, debido al inventario más detallado de archivos y bloques que realiza. El algoritmo es fantástico en lo que hace, pero necesita entender su problema para saber si realmente va a ser la mejor opción.

En un sistema de archivos muy grande (digamos muchos miles o millones de archivos) donde los archivos tienden a ser agregados pero no actualizados, "cp-u" probablemente será más eficiente. cp toma la decisión de copiar únicamente en metadatos y simplemente puede llegar a la negocio de copiar.

Tenga en cuenta que es posible que desee un poco de almacenamiento en búfer, por ejemplo, utilizando tar en lugar de cp directo, dependiendo del tamaño de los archivos, el rendimiento de la red, otra actividad del disco, etc. Me parece muy útil la siguiente idea:

tar cf - . | tar xCf directory -

Los metadatos en sí pueden convertirse en una sobrecarga significativa en sistemas de archivos muy grandes (clústeres), pero rsync y cp compartirán este problema.

Rsync parece ser con frecuencia la herramienta preferida (y en aplicaciones de propósito general es mi opción predeterminada habitual), pero probablemente hay muchas personas que usan rsync ciegamente sin pensarlo bien.

 41
Author: ckg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-02 07:01:44

El comando tal como está escrito creará nuevos directorios y archivos con la fecha y hora actuales, y usted como propietario. Si usted es el único usuario en su sistema y que está haciendo esto a diario puede no importar mucho. Pero si preservar esos atributos es importante para usted, puede modificar su comando con

cp -pur /home/abc/* /mnt/windowsabc/

El-p conservará la propiedad, las marcas de tiempo y el modo del archivo. Esto puede ser muy importante dependiendo de lo que está respaldando.

El comando alternativo con rsync sería

rsync -avh /home/abc/* /mnt/windowsabc

Con rsync, -a indica "archivo" que conserva todos los atributos mencionados anteriormente. - v indica "verbose" que solo enumera lo que está haciendo con cada archivo mientras se ejecuta. - z se deja aquí para las copias locales, pero es para la compresión, lo que ayudará si está haciendo copias de seguridad a través de una red. Finalmente, el-h le dice a rsync que informe tamaños en formatos legibles por humanos como MB,GB, etc.

Por curiosidad, ejecuté una copia para cebar el sistema y evitar sesgos contra la primera ejecución, luego cronometré lo siguiente en una ejecución de prueba de 1 GB de archivos desde una unidad SSD interna a un disco duro conectado a USB. Estos simplemente se copian en directorios de destino vacíos.

cp -pur    : 19.5 seconds
rsync -ah  : 19.6 seconds
rsync -azh : 61.5 seconds

Ambos comandos parecen ser casi los mismos, aunque comprimir y descomprimir obviamente gravan el sistema donde el ancho de banda no es un cuello de botella.

 8
Author: mightypile,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-27 00:04:20

Para una copia local, la única ventaja de rsync es que evitará la copia si el archivo ya existe en el directorio de destino. La definición de "ya existe" es (a) el mismo nombre de archivo (b) el mismo tamaño (c) la misma marca de tiempo. (Tal vez el mismo propietario / grupo; no estoy seguro...)

El "algoritmo rsync" es ideal para actualizaciones incrementales de un archivo a través de un enlace de red lento, pero no le comprará mucho por una copia local, ya que necesita leer el archivo existente (parcial) para ejecutar su " diff" calculo.

Así que si está ejecutando este tipo de comando con frecuencia, y el conjunto de archivos modificados es pequeño en relación con el número total de archivos, debería encontrar que rsync es más rápido que cp. (También rsync tiene una opción --delete que puede ser útil.)

 3
Author: Nemo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-14 05:18:49

Especialmente si utiliza un sistema de archivos de copia al escribir como BTRFS o ZFS, rsync es mucho mejor.

Uso BTRFS, y tengo esto en mi ~/.bashrc:

alias cp="rsync -ah --partial --inplace --info=progress2"

La bandera importante aquí para CoW FSs como BTRFS es --inplace porque solo copia la parte cambiada de los archivos, no crea nuevos para pequeños cambios entre archivos inodes, etc. Véase esto .

 2
Author: Geremia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-08 18:40:53