Copia y copia de seguridad de archivos y carpetas mediante la utilidad 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 permiten controlar muchos aspectos de la copia y duplicación de datos. Una de las características principales es la capacidad de comprimir datos durante el envío, lo que permite acelerar el proceso de copia entre servidores. Otra ventaja es la omisión de archivos idénticos durante la copia. Por lo tanto, solo se copiarán o transferirán los archivos diferentes, lo que sin duda ahorrará tiempo al sincronizar directorios grandes.
Opciones de la utilidad
Veamos ejemplos del uso de Rsync para copiar archivos y directorios al Cloud Storage remoto de Introserv utilizando el protocolo SSH. ¡Importante! Comandos similares, especificando solo el servidor de destino, le permitirán copiar directorios y archivos a cualquier servidor remoto a través de SSH.
Veamos algunas de las principales opciones de la utilidad que se utilizarán con más frecuencia. Una lista más detallada de las opciones disponibles se encuentra en la documentación man (comando man rsync):
-v – mostrar información detallada sobre el proceso
-c – verificar sumas de comprobación de archivos
-q – información mínima
-a – modo de archivo
-R – rutas relativas
-y – no sobrescribir archivos más recientes
-b – crear copia de seguridad
-l – copiar enlaces simbólicos
-L – copiar contenido de enlaces
-H – copiar enlaces duros
-g – conservar grupo
-p – conservar permisos de archivos
-t – conservar tiempo de modificación
-x – trabajar solo en este sistema de archivos
-e – usar otro protocolo de transporte (por ejemplo, ssh)
-z – comprimir archivos antes de la transferencia
--delete – eliminar archivos que no están en el origen
--exclude – excluir archivos
--recursive – enumerar directorios recursivamente
--no-recursive – desactivar recursión
--progress – mostrar progreso de transferencia de archivos
--stat – mostrar estadísticas de transferencia
--max-size – tamaño máximo de archivo para transferencia
--bwlimit – límite de velocidad para transferencias de archivos
Breve explicación de la sintaxis
rsync -az --progress /home/user/test.file boxxxx@boxxxxx.introserv.cloud:/remote_folder/
-az --progress – opciones que indican que es necesario archivar el archivo transferido, comprimirlo antes de la transferencia y mostrar el progreso de la copia en pantalla
/home/user/test.file – la ruta al archivo y el archivo en sí que necesita ser transferido
boxxxx@boxxxxx.introserv.cloud: – 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 @ está el nombre del recurso o la dirección IP del servidor remoto
/remote_folder/ – una carpeta en el recurso remoto. En nuestro ejemplo – en Introserv Cloud Storage.
Copiar un solo archivo a una carpeta en el 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. Ingrese la contraseña y continúe – verá el progreso y la velocidad de transferencia del archivo.
Copiar una carpeta a una carpeta en el 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á el directorio y todos los archivos dentro de él durante la transferencia.
Copiar el contenido de una carpeta local a una carpeta en el 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 en el 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 del almacenamiento remoto a una carpeta en el servidor local
Usando Rsync, puede iniciar la copia de una carpeta desde el almacenamiento remoto. El comando es el siguiente:
rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder /home/user/Desktop/
Verá el progreso y la velocidad de copia de la carpeta remota a una carpeta en el servidor local.
Copiar el contenido de una carpeta del almacenamiento remoto a una carpeta en el servidor local
Aquí también vale la pena prestar atención a la barra al final de la ruta de la carpeta de origen. Su presencia indica que solo se debe copiar el contenido de la carpeta.
rsync -zra --progress boxxxxx@boxxxxx.introserv.cloud:/remote_folder/ /home/user/Desktop/
Copiar el contenido de una carpeta excluyendo y/o incluyendo archivos
La utilidad le permite especificar explícitamente qué archivos transferir y cuáles deben excluirse. Para esto se utilizan 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 solo se transfirió un archivo, especificado por la opción --include. Tenga en cuenta que las opciones include y exclude se pueden usar por separado.
Copiar solo archivos que son diferentes de los archivos en la carpeta de destino
Para cancelar la copia de archivos idénticos, debe usar la opción -c para verificar las sumas de comprobación de archivos. Esto permitirá excluir del proceso de copia aquellos archivos que ya están en la carpeta de destino.
rsync -azrc --progress /home/user/Desktop/ boxxxx@boxxxx.introserv.cloud:/remote_folder/
Verá que solo se copiaron archivos diferentes a la carpeta remota, con excepción de los archivos que ya están en el almacenamiento remoto.
Uso de Rsync a través de SSH con un puerto SSH no estándar
Para transferir archivos desde/hacia un servidor con un puerto SSH modificado, use la opción -e 'ssh -p número_puerto'.
El comando para copiar un archivo a un servidor en el que el puerto SSH se ha cambiado a 44 será el siguiente:
rsync -azrc --progress -e 'ssh -p44' /home/user/Desktop/ user@server_ip:/remote_folder/