Copia y copia de seguridad de archivos y carpetas mediante la utilidad Rsync

Más sobre Rsync

Rsync es una herramienta rápida y versátil para copiar archivos y carpetas. La utilidad puede copiar datos tanto localmente como a otros hosts, incluyendo Cloud Storage de Introserv.
Las opciones de la utilidad le permiten controlar muchos aspectos de la copia y duplicación de datos.
Una de las principales características es la posibilidad de comprimir los datos durante el envío, lo que permite acelerar el proceso de copia entre servidores.
Otra ventaja es la excepción al copiar archivos idénticos. Por lo tanto, sólo se copiarán o transferirán archivos diferentes, lo que sin duda ahorrará tiempo a la hora de sincronizar directorios de gran tamaño.

Opciones de utilidades

Veamos ejemplos del uso de Rsync para copiar archivos y directorios al Cloud Storage remoto de Introserv utilizando el protocolo SSH. ¡Importante! Comandos similares, sólo especificando el servidor de destino, le permitirá copiar directorios y archivos a cualquier servidor remoto a través de SSH.

Echemos un vistazo a algunas de las principales opciones de utilidad que se utilizarán con más frecuencia. Una lista más detallada de las opciones disponibles está disponible en la documentación man( comandoman rsync ):

-v - muestra información detallada sobre el proceso
-c - comprueba las sumas de comprobación de los archivos
-q - información mínima
-a - modo de archivo
-R - rutas relativas
-y - no sobrescribir archivos más recientes
-b - crear una copia de seguridad
-l - copiar enlaces simbólicos
-L - copia el contenido de los enlaces
-H - copiar enlaces duros
-g - guardar grupo
-p - conservar los permisos de los ficheros
-t - guardar tiempo de modificación
-x - trabajar sólo en esta SL
-e - usar otro protocolo de transporte (por ejemplo, ssh)
-z - comprimir archivos antes de transferirlos
--delete - elimina ficheros que no están en el origen
--exclude - excluye ficheros
--recursive - enumera directorios recursivamente
--no-recursive - desactiva la recursividad
--progress - muestra el progreso de la transferencia de archivos
--stat - mostrar estadísticas de transferencia
--max-size - tamaño máximo de fichero a transferir
--bwlimit - límite de velocidad para la transferencia de archivos

Breve explicación de la sintaxis

rsync -az --progress /home/usuario/prueba.archivo boxxxx@boxxxxx.introserv.cloud:/remote_folder/

-az --progress opciones que indican que es necesario archivar el fichero transferido, comprimirlo antes de la transferencia y también mostrar el progreso de la copia en la pantalla;

/home/usuario/prueba.archivo: es la ruta al archivo y el propio archivo que debe transferirse;

boxxxx@boxxxxx.introserv.cloud: este es el recurso de destino (en nuestro ejemplo es el almacenamiento en la nube, pero también puede ser un servidor remoto) boxxxx es el nombre de usuario, después del signo @ es el nombre del recurso o la dirección IP del servidor remoto;

/carpeta_remota/ es una carpeta en un recurso remoto. En nuestro ejemplo - en Introserv Cloud Storage.

Copiar un archivo a una carpeta en un almacenamiento remoto

rsync -az --progress /home/usuario/escritorio/prueba.archivo boxxxxx@boxxxxx.introserv.cloud:/remote_folder/

Se le pedirá una contraseña para conectarse al almacenamiento:

Introduzca la contraseña y continúe, verá el progreso y la velocidad de transferencia de archivos:

Copiar carpeta a la carpeta de un almacenamiento remoto

Preste atención a las barras en las líneas de la carpeta de origen y la carpeta de destino. La ausencia de una barra en la carpeta de origen indica que queremos transferir recursivamente la carpeta local Desktop con todo su contenido a la carpeta remote_folder

rsync -azr --progress /home/usuario/Escritorio boxxxx@boxxxx.introserv.cloud:/remote_folder/

Verás que se transfiere el directorio y todos los archivos que contiene:

Copiar el contenido de una carpeta local a una carpeta de un almacenamiento remoto

Preste atención a la barra al final de la carpeta de origen. Su presencia indica que la utilidad debe copiar el contenido de la carpeta local a una carpeta del almacenamiento remoto

rsync -avzr --progress /home/usuario/Escritorio/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Verá el progreso y la velocidad de copia:

Copiar una carpeta de un almacenamiento remoto a una carpeta del servidor local

Utilizando Rsync, puede iniciar una copia de una carpeta desde un almacenamiento remoto. El comando tiene el siguiente aspecto

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder /home/usuario/Escritorio/

Verá el progreso y la velocidad de la copia de una carpeta remota a una carpeta del servidor local:

Copiando el contenido de una carpeta desde un almacenamiento remoto a una carpeta del servidor local.

Aquí también merece la pena prestar atención a la barra al final de la ruta de la carpeta de origen. Su presencia indica que sólo hay que copiar el contenido de la carpeta

rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder/ /home/usuario/Escritorio/

Copiar el contenido de una carpeta excluyendo y/o incluyendo archivos

La utilidad permite especificar explícitamente qué archivos transferir y cuáles deben excluirse. Para ello, utilice las opciones --include y --exclude.

rsync -azr --progress --include 'prueba.archivo' --exclude 'prueba.archivo2' /home/usuario/Escritorio/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Verás que sólo se transfiere un archivo, el especificado por la opción --include. Tenga en cuenta que las opciones include y exclude pueden utilizarse por separado

Copiar sólo los archivos que sean diferentes de los de la carpeta de destino

Para cancelar la copia de archivos idénticos, debe utilizar la opción -c para comprobar las sumas de comprobación de los archivos. Esto le permitirá excluir del proceso de copia aquellos archivos que ya se encuentren en la carpeta de destino

rsync -azrс --progress /home/usuario/Escritorio/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Verás que sólo se han copiado 3 archivos a la carpeta remota, a excepción del archivo test.odt, que ya se encuentra en el almacenamiento remoto:

Usando Rsync sobre SSH con un puerto SSH no estándar

Para transferir archivos desde/a un servidor con un puerto SSH modificado, utilice la opción -e 'ssh -p número_de_puerto' .

El comando para copiar un archivo a un servidor en el que el puerto SSH se ha cambiado a 44 tendrá este aspecto

rsync -azrс --progress -e 'ssh -p44' /home/usuario/Escritorio/usuario@servidor_ip:/carpeta_remota/