10 Ejemplos Prácticos de rsync para Hacer Respaldos

linux rsync comandos linux

Algunos comandos linux como rsync tienen una cantidad de opciones impresionantes, son muy versátiles pues con el tiempo han agregado formas de usarse, pero se vuelven un tanto complejo. Por eso es bueno poner 10 ejemplos prácticos de como usar rsync para hacer respaldos o copiar directorios con rsync en linux.

10 Ejemplos Prácticos de rsync para Hacer Respaldos

El comando linux rsync es uno de esos comandos que cualquier administrador de sistemas o cualquier usuario Linux debería conocer, es sumamente útil y puede ayudarte en muchas situaciones. Puede que sean demasiadas opciones de las que dispone rsync, pero las mas usadas pueden darnos un buen ejemplo de lo que se puede hacer con este comando y sobre todo como hacerlo.

1 Copiar o Sincronizar Archivos Localmente

Copiar un archivo de una ubicación a otra es una tarea sencilla, pero cuando se tienen que tomar en cuenta permisos, rutas, actualizaciones, y sobre todo tiempo rsync puede ser bastante útil. Para copiar un archivo con rsync puedes usar el siguiente comando

rsync -vh respaldo.tar.gz /tmp/backups/

En este ejemplo se realiza una copia del archivo respaldo.tar.gz dentro del directorio /tmp/backups/ el archivo tendrá el mismo contenido y el mismo tamaño pero será propiedad del usuario que ejecutó el comando y el tiempo de acceso/modificación, además de los permisos, serán los normales que se otorgarían al crear cualquier otro archivo común y corriente.

2 Copiar un Directorio y sus Archivos a un Servidor

Cuando se realiza una copia o sincronización entre equipos remotos siempre es recomendable utilizar la opción -z ya que comprime los archivos enviados o a transferir antes de enviarlos, lo cual reduce el ancho de banda y el tiempo necesarios para completar la transferencia.

Copiar un Archivo a un Equipo Remoto

Es posible copiar los archivos contenidos en un directorio, así como cualquier otro directorio contenidos dentro del primero, esto se realiza mediante el acceso a un equipo de forma remota usando un nombre de usuario y una contraseña.

rsync -avz Documentos root@192.168.0.100:/home/usuario/

Si «Documentos» es un directorio, este se creará dentro del directorio /home/usuario/ que se encuentra en el equipo remoto, este directorio contendrá la misma estructura y archivos que el origen pero estará ubicado en la ruta /home/usuario/Documentos/

Copiar un Directorio de un Equipo Remoto a un Directorio Local

El caso contrario también es posible, solo es necesario indicar la ubicación correspondiente y el directorio local donde se desea copiar el directorio. Por ejemplo

rsync -avz root@192.168.0.100:/home/usuario/Documentos /tmp/Respaldo/

Este comando copiará el Directorio «/home/usuario/Documentos» que está en el servidor con la dirección IP que puedes ver y se realizará una copia del directorio dentro de /tmp/Respaldos/ que está en el equipo local. Aquí se creará un directorio /tmp/Respaldos/Documentos/ aún si no existiera y contendrá los archivos y la estructura de archivos que el directorio remoto.

Copiar un Archivo Mediante ssh

Hay ocasiones en donde se requiere utilizar ssh para realizar la copia o sincronización de archivos/directorios y para pode utilizar rsync de esta forma es necesario utilizar la opción -e, recuerda que puedes ver todos los detalles del comando linux rsync aquí.

Para realizar la copia de un archivo por medio de ssh puedes utilizar este ejemplo:

rsync -avz -e ssh respaldo.tar.gz root@192.168.0.100:/backups/

En esta forma le estás indicando que utilizar un shell externo con la opción «-e» y el shell a usar es «ssh»

4 Mostrar el Progreso al Copiar / Sincronizar

Hay ocasione en las que se requiera copiar archivos que pueden tardar algo de tiempo y en ocasiones es útil saber el progreso que lleva la copia. Para poder tener esta información durante la operación se puede utilizar la opción -P o –partial –progress

rsync -avz -P -e ssh /var/log/httpd/access.log root@192.168.0.100:/backups/

Las opciones en rsync pueden escribirse juntas, salvo que deban incluir algún parámetro como la opción -e, en este caso debería ser la última para poder indicar que será por ssh. El siguiente comando tiene exactamente el mismo resultado que el anterior.

rsync -avzPe ssh /var/log/httpd/access.log root@192.168.0.100:/backups/

Al igual el que los anteriores, el siguiente ejemplo tiene el mismo resultado.

rsync -a -v -z -e  ssh --partial --progress /var/log/httpd/access.log root@192.168.0.100:/backups/

5 Sincronizar un directorio entre 2 equipos

Para hacer una sincronización de un directorio entre dos equipos puedes utilizar el comando como si realizaras la copia, solo que en las dos rutas deses asegurarte que se termine con el caracter «/», esto asegurará que el «directorio» origen se sincronice (refiriéndose a su contenido) con el «directorio» destino. Es importante aclarar que los directorios puede llamarse igual o tener distinto nombre, pero los archivos del origen estará en el destino, si han cambiado o si son nuevo, se copiarán al destino.

rsync -avz -e shh /var/www/html/ root@192.168.0.100:/home/web/public_html/

La próxima vez que se ejecute el comando solo copiará los archivos nuevo o que hayan cambiado, si no hay archivos en estas condiciones indicará que se la sincronización se realizó sin cambios. Esto es muy importante por que así puedes tener la seguridad que los dos directorios, el origen y el remoto tiene los mismos archivos.

6 Incluir o Excluir archivos específicos

Otra opción importante para realizar la copia o sincronización de archivos es que se pueden excluir archivos o directorios que tengan algun nombre o elmenteo determinado, por ejemplo evitar que se copiaen los archivos que tengan la extensión .conf, así que serán excluidos.

rsync -avz --exclude "*.conf" /var/www/html/ /home/web/public_html/

Por ejemplo se puede realizar la sincronización solo de los archivos .html excluyendo todos los demás.

rsync -avz --include "*.html" --exclude "*" /var/www/html/ /home/web/public_html/

7 La opción delete al usar rsync

Un aspecto importante al usar rsync es que actualiza diferencias en archivos nuevos o modificados, pero no elimina los archivos que no están en el origen. Si los archivos no existen en el orígen, pero existen en el destino, estos últimos no se eliminan, solo se omiten. Para eliminar esos archivos que no existen en el origen, pero que existen en el destino puedes utilizar una de las varias opciones –delete*, digo varias porque este parametro te permite hacer esta acción antes, después o durante la copia.

Las opciones del comando rsync las puedes ver aquí y todas las que comienzan con «–delete» son las opciones que hay para borrar los archivos en el destino

Para realizar un espejo de un directorio incluso eliminando los archivos que no están en el origen puedes usar este comando

rsync -avz --delete root@192.168.0.100:/var/html/www/ ~/Proyectos/web1/

8 Limitar el tamaño de los archivos enviados

En ocasiones es importante no copiar archivos mayores de cierto tamaño si hay limitaciones en el host destino. Para este caso rsync tiene la opción «–max-size» la cual permite limitar el tamaño de los archivos que se copian y los que exceden ese tamaño se excluyen.

rsync -avz -e ssh --max-size='200k' ~/Documentos/ root@192.168.0.100:/root/tmp/

También existe la opción para excluir los archivos menores a un tamaño de archivo determinado, la opción es «–min-size» y se utiliza de la misma forma.

rsync -avz -e ssh --min-size='3k' ~/Documentos/ root@192.168.0.100:/root/tmp/

9 Eliminar los archivos de origen después de copiar (Mover)

Si, me queda claro que existe el comando mv, para mover archivos, pero cuando requieres tener una certeza que se actualicen los archivos, se borren los archivos que no existen en el origen o cuando ese «mover» archivos se hace entre dos host remotos, rsync es una herramienta invaluable.

Para eliminar los archivos de origen después de copiarlos se utiliza la opción «–remove-source-files», esta opción debe ser usada con precaución ya que los archivos no podrán ser recuparados, no se mueven a una bandeja de reciclaje o algo parecido, simplemente se eliminan del sistema de archivos.

Este ejemplo muestra como se utiliza esta opción:

rsync --remove-source-files -av respaldo.tar.gz /tmp/backups/

10 Hacer una prueba antes de alterar archivos

rsync te permite ejecutar un comando y mostrarte que archivos se borrarían, se copiarían, se actualizarían, etc. Sin realmente modificar nada. Esta opción te permite saber exactamente que ocurrirá sin modificar los archivos en el destino.

Esta opción es «–dry-run» así solo mostrará en pantalla las acciones a realizar, pero sin que estas hayan ocurrido. Esto te permitirá estar seguro(a) de que va a ocurrir con la copia de archivos con rsync antes de hacer alguna acción incorrecta y crear un desastre.

Este es un ejemplo de como utilizar rsync con esta opción:

rsync --remove-source-files -av  --dry-run respaldo.tar.gz /tmp/backups/

Espero que se haya gustado este post, rsync es una herramienta muy versátil y todo usuario de Linux, aunque sea solo para una laptop o mas aun si administras equipos, debe conocer este comando ya que te permite hacer cosas de forma sencilla y práctica,  que de otro modo realmente serían sumamente complicadas, o simplemente no serían posibles.

Hasta el proximo post!

 

 

This entry was posted in Blog and tagged , , . Bookmark the permalink.

4 Responses to "10 Ejemplos Prácticos de rsync para Hacer Respaldos"

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


*