Noticias, tutoriales y curiosidades sobre tecnología informática.

Autor

Reginaldo Perez Ver el perfil de Reginaldo Perez en LinkedIn

Advertising

domingo, 7 de agosto de 2016

11 ejemplos prácticos del comando de Linux rsync para sincronizar los datos



Rsync  es conocido como " sincronización remota ". 
El comando rsync es usado para compartir y sincronizar datos (archivos y directorios) de una ubicación a otra ubicación. 
También se utiliza para la operación de copia de seguridad en máquinas UNIX / Linux. En este artículo vamos a ver 11 ejemplos prácticos del comando rsync 11 en Linux.
Características de comando rsync:
§  Es más seguro.
§  No requiere privilegios de root para instalar y ejecutar rsync.
§  Mayor velocidad que secure copy (SCP)
§  Es compatible para copiar enlaces, dispositivos, propietarios, losgrupos y permisos
§  Excluir y excluir, desde opciones similares a GNU tar
§  rsync permite la encriptación de datos utilizando el protocolo SSH durante la transferencia.
§  Se puede utilizar cualquier shell remoto transparente, incluyendo ssh o rsh
§  Tuberias de diferentes tipos de transferencias de archivos o directorios para reducir al mínimo los costos de latencia.
§  El apoyo a los demonios rsync anónimos
§  Rsync consume menos ancho de banda.
§   
Instalar el comando rsync:
# sudo apt-get install rsync
sintaxis básica:
# Rsync <opciones> <origen> <destino>
§  r      - recursiva
§  v      - verbosa
§        - transferir todo tipo de enlaces simbólicos encontrados
§  h      - legible por humanos
§  p      - visualizar el progreso durante la transferencia
§  e      - especificar el uso de shell remoto
§  un      - modo de archivo
§  z       - comprimir los datos de archivo
§  O       - preservar la propiedad
§  g       - preservar los grupos
§  t        - preservar las marcas de tiempo
§  D      - conservar dispositivos de bloque y de carácter
§  d        - árbol de directorio se crea en el destino
 ¿Qué es el comando de Linux rsync  ..?
Rsync es un comando, que se utiliza para sincronizar los datos de un directorio a otro directorio dentro de la máquina local y del cliente al servidor. Rsync considera a la máquina local como cliente y como servidor a la máquina remota.

1. Sincronización desde un directorio a otro directorio dentro de la máquina local
Para copiar / sincronizar directorios con en el anfitrión local podemos hacer uso de la orden de ejemplo a continuación.
# rsync -av /rsynctest/*.txt /tmp/
sending incremental file list
file1.txt
file10.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
sent 523 bytes received 202 bytes 1450.00 bytes/sec
total size is 0 speedup is 0.00
El ejemplo de arriba copiará sólo el patrón * .txt  del directorio / rsynctest al directorio / tmp /
# rsync -av /rsynctest /tmp/
sending incremental file list
rsynctest/
rsynctest/document1.doc
rsynctest/document10.doc
rsynctest/document2.doc
rsynctest/document3.doc
rsynctest/document4.doc
rsynctest/document5.doc
rsynctest/document6.doc
rsynctest/document7.doc
rsynctest/document8.doc
rsynctest/document9.doc
rsynctest/file1.txt
rsynctest/file10.txt
rsynctest/file2.txt
rsynctest/file3.txt
rsynctest/file4.txt
rsynctest/file5.txt
rsynctest/file6.txt
rsynctest/file7.txt
rsynctest/file8.txt
rsynctest/file9.txt
sent 1072 bytes received 396 bytes 2936.00 bytes/sec
total size is 0 speedup is 0.00
el ejemplo de arriba copiará un conjunto de datos y se crea un directorio en el directorio remoto porque no utilizamos barra final / después del nombre del directorio. Si usamos una barra final después del nombre del directorio no va a crear el directorio en la ruta remota y sólo copia los archivos de la fuente
# ls / tmp /
file10.txt file5.txt rsynctest
2. Sincronizar datos de directorio en la máquina remota
Esto sería transferir todos los archivos que coinciden con el patrón * .doc del directorio actual al directorio / tmp / en la máquina con la dirección 192.168.4.200 . Si alguno de los archivos ya existen en el sistema remoto, el protocolo de actualización remota de rsync actualizará los archivos mediante el envío solamente de las diferencias.

# rsync tv /rsynctest/*.doc 192.168.4.200:/tmp/
133 bytes enviados recibieron 12 bytes 96.67 bytes / seg
tamaño total es de 0 aceleración es 0,00

 3. Copiar los datos al host remoto con compresión 
Para comprimir los datos a enviar tenemos que utilizar la opción 'z' , junto con 11 comando rsync.
Veamos un ejemplo a continuación
# rsync -azv /rsynctest/ 192.168.4.200:/root/
root@192.168.4.200's password:
sending incremental file list
./
document1.doc
document10.doc
document2.doc
document3.doc
document4.doc
document5.doc
document6.doc
document7.doc
document8.doc
document9.doc
file1.txt
file10.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
sent 993 bytes received 395 bytes 925.33 bytes/sec
total size is 0 speedup is 0.00
# du -sh /rsynctest/
4.0K /rsynctest/
4. Sincronizar datos desde el host remoto a la máquina local
No sólo se puede sincronizar los datos de máquina local a la máquina remota. también podemos hacer en forma inversa simplemente sincronizar los datos de la máquina remota a la máquina local véase este ejemplo:
# rsync -azv 192.168.4.200:/root/reversesync/ /root/
root@192.168.4.200's password:
receiving incremental file list
./
sync1
sync10
sync2
sync3
sync4
sync5
sync6
sync7
sync8
sync9
sent 204 bytes received 472 bytes 1352.00 bytes/sec
total size is 0 speedup is 0.00
Vemos que  la sincronización de datos se ha hecho desde la máquina remota 192.168.4.200  al directorio / root /  de la máquina local. Aquí hemos dado primero la ruta  (Fuente) a la máquina remota y el destino la máquina local.
5. No sobrescribir archivos en la ruta de destino
En algunos casos después que los archivos de destino han sido modificados o actualizados con los últimos datos, no queremos sobrescribir con datos antiguos. Para ello tenemos que utilizar la opcion -u  junto con el comando rsync
Antes de la actualización que ha modificado un archivo llamado file1.txt con un texto en el destino
# cat file1.txt
Los datos de prueba no se actualizan
Ahora se sincronizan y comprobamos si los datos se han sobreescrito o no
# rsync -azuv /rsynctest/ /root/
root@192.168.4.200's password:
sending incremental file list
./
sent 273 bytes received 15 bytes 576.00 bytes/sec
total size is 0 speedup is 0.00
# cd /rsynctest/
# cat file1.tx
Después de la sincronización vemos el estado de los datos. Nada se ha cambiado quedaron 100% intactos.
#cat file1.txt
Los datos de prueba no se actualizan
6. Ver el progreso de Rsync al sincronizar
Hasta ahora en todos los comandos rsync anteriores no hemos visto ningún progreso mientras copia está en marcha, ahora vamos a ver progreso de la copia para que sepamos la cantidad de copias que se han hecho. Simplemente hay que añadir la opción -progress que mostrará información sobre el progreso de la copia actual.
# rsync -azv --progress /rsynctest/ 192.168.4.200:/tmp/
root@192.168.4.200's password:
sending incremental file list
./
file1.txt
0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=10/22)
file10.txt
0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=9/22)
file2.txt
0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=8/22)
file3.txt
0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=7/22)
file4.txt
0 100% 0.00kB/s 0:00:00 (xfer#5, to-check=6/22)
file5.txt
0 100% 0.00kB/s 0:00:00 (xfer#6, to-check=5/22)
file6.txt
0 100% 0.00kB/s 0:00:00 (xfer#7, to-check=4/22)
file7.txt
0 100% 0.00kB/s 0:00:00 (xfer#8, to-check=3/22)
file8.txt
0 100% 0.00kB/s 0:00:00 (xfer#9, to-check=2/22)
file9.txt
0 100% 0.00kB/s 0:00:00 (xfer#10, to-check=1/22)
linux-nrpe-agent.tar.gz
7003923 100% 19.61MB/s 0:00:00 (xfer#11, to-check=0/22)
sent 7005639 bytes received 224 bytes 14011726.00 bytes/sec
total size is 7003923 speedup is 1.00
7. Eliminar los archivos de destino que no son necesarios (archivos que no existen en la fuente)
Esta es una buena idea para mantener intacto los archivos de origen y destino esto es muy útil cuando se desea hacer copia exacta de la fuente
Antes de comando rsync, estos son los archivos en el origen
# ls
sync1 sync10 sync2 sync3 sync4 sync5 sync6 sync7 sync8 sync9
# pwd
/root/reversesync
Ejecute el comando rsync con la opción de borrar los archivos de destino -delete
# rsync -azv --delete /rsynctest/ 192.168.4.200:/root/reversesync/
root@192.168.4.200's password:
sending incremental file list
./
deleting sync9
deleting sync8
deleting sync7
deleting sync6
deleting sync5
deleting sync4
deleting sync3
deleting sync2
deleting sync10
deleting sync1
document1.doc
document10.doc
document2.doc
document3.doc
document4.doc
document5.doc
document6.doc
document7.doc
document8.doc
document9.doc
file1.txt
file10.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
linux-nrpe-agent.tar.gz
sent 7006003 bytes received 414 bytes 4670944.67 bytes/sec
total size is 7003923 speedup is 1.00
Después de que  rsync ha tenido éxito se consulta el destino 
ls
document10.doc document2.doc document4.doc document6.doc document8.doc file10.txt file2.txt file4.txt file6.txt file8.txt linux-nrpe-agent.tar.gz
document1.doc document3.doc document5.doc document7.doc document9.doc file1.txt file3.txt file5.txt file7.txt file9.txt
# pwd
/root/reversesync
8. Comprobar cambios entre origen y destino
Esta opción le ayudará en la comparación de los archivos y observar los cambios. Vamos a ver cómo esta increíble opción del comando rsync  funciona para nosotros
# rsync -azvi /rsynctest/ 192.168.4.200:/root/reversesync/
root@192.168.4.200's password:
sending incremental file list
.d..t...... ./
.f....og... document4.doc
<f.st...... document7.doc
sent 426 bytes received 43 bytes 938.00 bytes/sec
total size is 7003923 speedup is 14933.74
Como vemos origen y el destino tiene cambios en archivos document4.doc y document7.doc  antes de los nombres de archivo podemos ver los uno símbolos a la derecha, esto es  lo que significan
§  f = Esto es un archivo
§  o = propiedad ha cambiado
§  g = Propiedad del Grupo cambió
§  s = variación de tamaño
§   t = Tiempo cambió
al  usar la opción -i se sincronizarán los archivos desde el origen al destino y se realizan los cambios en el destino
9. Sólo comprobar los cambios en entre origen y destino antes de la sincronización
Si usted tiene miedo de ejecutar el comando rsync en su entorno no se preocupe aquí hay un ejemplo donde se puede comparar los cambios antes de ejecutar el comando rsync

# rsync -vh --dry-run /rsynctest/document7.doc 192.168.4.200:/root/reversesync/document7.doc
root@192.168.4.200's password:
document7.doc
sent 37 bytes received 15 bytes 104.00 bytes/sec
total size is 0 speedup is 0.00 (DRY RUN)
[root@TechTutorials ~]# rsync --dry-run /rsynctest/document4.doc 192.168.4.200:/root/reversesync/document4.doc
root@192.168.4.200's password
Como en el ejemplo anterior he utilizado la opción -dry que nos dirá los cambios en el destino. El archivo Document7.doc  tiene cambios es por eso que se muestra enviar y recibir bytes mientras que el archivo document4.doc no tiene ningúno al comparar los cambios desde la fuente  por eso enviar y recibir tiene cero bytes.
10. Evitar la transferencia de archivos de gran tamaño
En algunos de los casos que no queremos para transferir / copiar / sincronizar archivos muy grandes al destino en tal caso también tenemos una opción para detener la transferencia de archivos muy grandes.
# rsync -azv --max-size='1000k' /rsynctest/ 192.168.4.200:/root/reversesync/
sending incremental file list
./
document1.doc
document10.doc
document2.doc
document3.doc
document4.doc
document5.doc
document6.doc
document7.doc
document8.doc
document9.doc
file1.txt
file10.txt
file2.txt
file3.txt
file4.txt
file5.txt
file6.txt
file7.txt
file8.txt
file9.txt
test.rpm
test1.nothing
test2.nothing
test3.nothing
test4.nothing
test5.nothing
sent 14260 bytes received 509 bytes 9846.00 bytes/sec
total size is 9695775 speedup is 656.50
# ls -ltr /rsynctest/
total 9472
-rw-r--r--. 1 root root 0 Aug 3 19:55 file3.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file2.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file1.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file7.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file6.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file5.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file4.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file9.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file8.txt
-rw-r--r--. 1 root root 0 Aug 3 19:55 file10.txt
-rw-r--r--. 1 root root 0 Aug 3 19:56 document4.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document3.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document2.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document1.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document9.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document8.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document7.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document6.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document5.doc
-rw-r--r--. 1 root root 0 Aug 3 19:56 document10.doc
-rw-r--r--. 1 root root 0 Aug 4 15:03 test5.nothing
-rw-r--r--. 1 root root 0 Aug 4 15:03 test4.nothing
-rw-r--r--. 1 root root 0 Aug 4 15:03 test3.nothing
-rw-r--r--. 1 root root 0 Aug 4 15:03 test2.nothing
-rw-r--r--. 1 root root 0 Aug 4 15:03 test1.nothing
-rw-r--r--. 1 root root 7003923 Aug 4 15:36 linux-nrpe-agent.tar.gz
-rw-r--r--. 1 root root 14500 Aug 4 15:36 test.rpm
-rw-r--r--. 1 root root 2677352 Aug 4 15:36 nagios-plugins-2.1.1.tar.gz
De acuerdo con la opción del comando anterior es copiar los archivos que no son más de 1000KB en tamaño. A continuación los archivos de  más de 1000KB de tamaño se quitaran es por eso que no se copian en el destino.
11. Enviar archivos tal cual
Con la opción delta-transfer del  algoritmo de rsync  todo el archivo se envía tal cual. La transferencia puede ser más rápida si se utiliza esta opción cuando el ancho de banda entre las máquinas de origen y de destino es mayor que el ancho de banda en el disco (especialmente cuando el "disco" es en realidad un sistema de ficheros en red). Este es el valor por defecto cuando tanto el origen y el destino se especifican como caminos locales, pero sólo si no hay opción de proceso por lotes. A continuación se muestra el ejemplo.
# rsync -azvW /rsynctest/file2.txt 192.168.4.200:/root/
sending incremental file list
file2.txt
sent 114 bytes received 31 bytes 290.00 bytes/sec
total size is 40 speedup is 0.28


0 comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...