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 capacidad de comprimir datos durante el envío, lo que le 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 grandes directorios.

Opciones de utilidades

Veamos ejemplos de uso de Rsync para copiar archivos y directorios a un servidor remoto Almacenamiento en la Nube 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 - mostrar información detallada sobre el proceso
-c - comprobar las sumas de comprobación de los archivos
-q - información mínima
-a - modo de archivo
-R - rutas relativas
-y - no sobrescribir los archivos más recientes
-b - crear una copia de seguridad
-l - copiar enlaces simbólicos
-L - copiar contenido de enlaces
-H - copiar enlaces duros
-g - guardar grupo
-p - preservar permisos de archivos
-t - guardar tiempo de modificación
-x - trabajar sólo en este FS
-e - usar otro protocolo de transporte (por ejemplo, ssh)
-z - comprimir archivos antes de transferirlos
--delete - borrar archivos que no están en el origen
--exclude - excluir archivos
--recursive - enumerar directorios recursivamente
--no-recursive - desactivar la recursividad
--progress - mostrar el progreso de la transferencia de archivos
--stat - mostrar estadísticas de transferencia
--max-size - tamaño máximo de archivo para transferir
--bwlimit - límite de velocidad para transferir 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/user/Desktop/test.file boxxxxx@boxxxxx.introserv.cloud:/remote_folder/

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

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

Copiar carpeta a carpeta en 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/user/Desktop boxxxx@boxxxx.introserv.cloud:/remote_folder/

Verá 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/user/Desktop/ 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/user/Desktop/

Verá el progreso y la velocidad de 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 'test.file' --exclude 'test.file2' /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

Verá 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 distintos 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 ficheros que ya se encuentren en la carpeta de destino

rsync -azrс --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/

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

Uso de 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á el siguiente aspecto:

rsync -azrс --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/