GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

¿Busca una solución confiable y robusta para respaldar sus datos en Linux? Rsync te tengo cubierto! Esta guía lo guía a través de los pasos para respaldar archivos y directorios usando Rsync en Linux.

1. Introducción

Si nunca realiza una copia de seguridad de sus datos considerando que todo funcionará bien, entonces diría que está equivocado.

Solo pregúntele a cualquier usuario de Linux, compartirán el dolor de no hacer una copia de seguridad de su sistema/datos. Como novato, cometí ese error una vez y aprendí la importancia de la copia de seguridad.

Existen muchas herramientas de copia de seguridad para plataformas Linux y Unix. Rsync (Remote Sync) se considera una de las herramientas de respaldo más utilizadas y confiables.

2. Copia de seguridad de archivos y directorios usando Rsync en Linux

Usando Rsync, podemos,

  1. copia de seguridad de todo el sistema,
  2. o hacer copias de seguridad de archivos y directorios individuales.

En el primer tipo, copiamos todo el sistema de archivos de Linux a un dispositivo externo o un recurso compartido de red. Puede utilizar esta copia para devolver la máquina a su estado original en caso de que falle el sistema.

El segundo tipo es copia de seguridad o copia de archivos y directorios selectivos únicamente. Por ejemplo, puede copiar los archivos de configuración importantes o todo el $HOME directorio y excluir todo lo demás.

Ya le hemos mostrado cómo hacer una copia de seguridad de todo el sistema Linux usando Rsync . Esta guía se enfoca en archivos y directorios de respaldo selectivos usando Rsync en Linux.

2.1. Elección del medio de almacenamiento

Como primer paso, decida dónde va a hacer una copia de seguridad de sus datos. ¡Es muy importante!

Puede hacer una copia de seguridad de sus datos en un disco duro externo, un almacenamiento en la nube o un almacenamiento conectado a la red (NAS). Una opción sencilla y económica es utilizar un disco duro externo.

Si tiene dos unidades separadas en su máquina, puede usar cualquiera de las unidades para respaldar sus datos considerando que ambas no fallarán a la vez.

Nota:

Si se toma en serio la copia de seguridad, no coloque la copia de seguridad en la misma unidad. Utilice siempre una unidad externa, una unidad secundaria, un recurso compartido de red y almacenamiento en la nube, etc.

Para fines de demostración, usaré un 1 TB disco duro externo a lo largo de esta guía.

2.3. Copia de seguridad de archivos usando Rsync

La sintaxis general de Rsync para copiar datos de una ubicación a otra es:

rsync [OPTION…] SRC… [DEST]

Aquí,

  • OPTION - la lista de opciones de Rsync
  • SRC - Archivo/directorio fuente
  • DEST - Destino

Aquí hay un comando Rsync simple para hacer una copia de seguridad o copiar un archivo de una ubicación a otra en el propio sistema local.

$ rsync src_file dest_file

Ejemplos:

$ rsync -auv ostechnix.txt ostechnix-bak.txt

Aquí,

  • -a - Modo de modo de archivo (manteniendo las propiedades del archivo y los enlaces simbólicos)
  • -u - Omita los archivos que son más nuevos en el extremo receptor.
  • -v - Modo detallado

El comando anterior guarda el archivo de respaldo ostechnix-bak.txt archivo en el directorio actual. También puede especificar un directorio de destino diferente como se muestra a continuación:

$ rsync -auv ostechnix.txt Downloads/ostechnix-bak.txt

Si no especifica el nombre del archivo de destino, Rsync usará el mismo nombre del archivo de origen para el archivo de destino.

Guardar archivos de copia de seguridad en el mismo disco no es realmente una copia de seguridad. Debe guardar los datos de respaldo en una unidad externa o recurso compartido de red o al menos en una partición diferente.

Por ejemplo, el siguiente comando respalda el archivo en mi disco externo:

$ rsync -auv ostechnix.txt /media/karthick/"My Passport"/

Rsync tiene muchas opciones avanzadas. Echa un vistazo al siguiente ejemplo:

$ rsync -azvhP ostechnix.txt /media/karthick/"My Passport"/

Este comando transfiere el archivo en modo de archivo (para preservar los atributos) y comprimido (en zip) con una barra de progreso detallada y legible por humanos.

2.4. Copia de seguridad de directorios usando Rsync

En lugar de hacer una copia de seguridad de un solo archivo, puede colocar todos los archivos en un directorio y hacer una copia de seguridad de ese directorio con Rsync. Esto resulta útil al duplicar y sincronizar datos.

A los efectos de esta guía, le mostraré cómo hacer una copia de seguridad del directorio HOME usando Rsync.

2.4.1. Copia de seguridad del directorio HOME usando Rsync

Rsync es una herramienta de copia de archivos incremental. Significado:solo sincroniza datos nuevos o modificados en el directorio de origen (es decir, /home en nuestro caso) en lugar de sincronizar todos los datos nuevamente desde cero.

Para hacer una copia de seguridad de mi $HOME directorio a mi disco externo, usé el siguiente comando:

$ rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

Analicemos el comando anterior y veamos qué hace cada opción.

  • La bandera -a es la combinación de muchas opciones. Este indicador se ocupa de la copia recursiva y de la retención de atributos como permiso de archivo/directorio, propietario, etc.
  • La bandera -v habilitará el modo detallado que proporcionará más registros en la terminal cuando ejecute el comando rsync.
  • La bandera -x restringirá rsync para sincronizar datos dentro de los límites del sistema de archivos. Si ha montado algún sistema de archivos dentro de su directorio de inicio, se omitirá durante la operación de sincronización.
  • La bandera -P es la combinación de dos banderas. Mostrará el progreso de cada sincronización y conservará los archivos parcialmente transferidos.
  • La bandera --delete eliminará todos los directorios y archivos que no estén disponibles en el origen pero sí en el destino. Debes tener mucho cuidado mientras usa la bandera.
  • La marca --exclude-from=File acepta un archivo como argumento. Este archivo contiene la lista de archivos y directorios que rsync ignorará.

He creado un archivo llamado ignore_list.txt que contiene los archivos y directorios que deben excluirse.

En el comando anterior, esta parte --exclude-from=/home/karthick/Work/Backup/ignore_list.txt define la lista de exclusión.

Aquí está el contenido de ignore_list.txt archivo:

La lista de elementos que se excluirán de la imagen de arriba es mi elección personal y puede diferir para usted. Modifique el parámetro según su entorno.

Las dos últimas partes del comando Rsync anterior son las ubicaciones de origen y destino. En mi caso, la fuente es mi directorio $HOME y el destino es mi disco externo. Reemplace el origen y el destino según su entorno.

Aviso: Si desea conocer el punto de montaje de su unidad externa, ejecute lsblk comando.

$ lsblk

sdb             8:16   0 931.5G  0 disk  
└─sdb1          8:17   0 931.5G  0 part  /media/karthick/My Passport

Antes de ejecutar rsync comando por primera vez, siempre se recomienda hacer una prueba . La ejecución de prueba simulará qué cambios se realizarán. Use el mismo comando pero con el -n bandera.

$ rsync -avxP -n --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

Salida de muestra:

 sending incremental file list
 karthick/
 karthick/.bash_history
         20,527 100%    0.00kB/s    0:00:00 (xfr#1, ir-chk=1056/1060)
karthick/.shutter/
karthick/.shutter/drawingtool.xml
            228 100%    4.54kB/s    0:00:00 (xfr#2, ir-chk=1037/1060)
karthick/.shutter/profiles/
karthick/Pictures/
karthick/Pictures/Selection_001.png
         37,626 100%  349.94kB/s    0:00:00 (xfr#3, to-chk=47/3001)
karthick/Pictures/Selection_002.png
         25,815 100%  227.12kB/s    0:00:00 (xfr#4, to-chk=46/3001)
karthick/Pictures/Selection_003.png
         63,275 100%  532.69kB/s    0:00:00 (xfr#5, to-chk=45/3001)
karthick/Pictures/Selection_004.png
         77,965 100%  581.20kB/s    0:00:00 (xfr#6, to-chk=44/3001)
karthick/Pictures/Selection_005.png
         75,863 100%  532.99kB/s    0:00:00 (xfr#7, to-chk=43/3001)
karthick/Pictures/Selection_006.png
         11,628 100%   75.20kB/s    0:00:00 (xfr#8, to-chk=42/3001)
karthick/Pictures/Selection_007.png
         24,311 100%  150.26kB/s    0:00:00 (xfr#9, to-chk=41/3001)
karthick/Work/Backup/
karthick/Work/Backup/home_dir_backup.sh
            764 100%    4.34kB/s    0:00:00 (xfr#10, to-chk=20/3001)
karthick/Work/Backup/home_dir_backup.sh~
            796 100%    4.37kB/s    0:00:00 (xfr#11, to-chk=19/3001)
karthick/Work/Backup/ignore_list.txt
            182 100%    1.00kB/s    0:00:00 (xfr#12, to-chk=18/3001)
karthick/Work/Backup/ignore_list.txt~
            182 100%    1.00kB/s    0:00:00 (xfr#13, to-chk=17/3001)
...
...
...
sent 88,424 bytes  received 9,459 bytes  195,766.00 bytes/sectotal size is 3,028,935,519  speedup is 30,944.45 (DRY RUN)

Si todo va según lo previsto,  elimine el -n marca y ejecuta el comando para hacer una copia de seguridad de tus datos.

$ rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

Según el tamaño, la primera ejecución llevará algún tiempo.

sending incremental file list
karthick/
karthick/.bash_history
         20,527 100%    0.00kB/s    0:00:00 (xfr#1, ir-chk=1056/1060)
karthick/.shutter/
karthick/.shutter/drawingtool.xml
            228 100%    4.54kB/s    0:00:00 (xfr#2, ir-chk=1037/1060)
karthick/.shutter/profiles/
karthick/Pictures/
karthick/Pictures/Selection_001.png
         37,626 100%  349.94kB/s    0:00:00 (xfr#3, to-chk=47/3001)
karthick/Pictures/Selection_002.png
         25,815 100%  227.12kB/s    0:00:00 (xfr#4, to-chk=46/3001)
karthick/Pictures/Selection_003.png
         63,275 100%  532.69kB/s    0:00:00 (xfr#5, to-chk=45/3001)
karthick/Pictures/Selection_004.png
         77,965 100%  581.20kB/s    0:00:00 (xfr#6, to-chk=44/3001)
karthick/Pictures/Selection_005.png
         75,863 100%  532.99kB/s    0:00:00 (xfr#7, to-chk=43/3001)
karthick/Pictures/Selection_006.png
         11,628 100%   75.20kB/s    0:00:00 (xfr#8, to-chk=42/3001)
karthick/Pictures/Selection_007.png
         24,311 100%  150.26kB/s    0:00:00 (xfr#9, to-chk=41/3001)
karthick/Work/Backup/
karthick/Work/Backup/home_dir_backup.sh
            764 100%    4.34kB/s    0:00:00 (xfr#10, to-chk=20/3001)
karthick/Work/Backup/home_dir_backup.sh~
            796 100%    4.37kB/s    0:00:00 (xfr#11, to-chk=19/3001)
karthick/Work/Backup/ignore_list.txt
            182 100%    1.00kB/s    0:00:00 (xfr#12, to-chk=18/3001)
karthick/Work/Backup/ignore_list.txt~
            182 100%    1.00kB/s    0:00:00 (xfr#13, to-chk=17/3001)…
…
…
sent 3,029,863,865 bytes  received 51,335 bytes  53,626,817.70 bytes/sec
total size is 3,028,934,994  speedup is 1.00

2.4.2. Crear secuencia de comandos de copia de seguridad

Recordar un comando largo puede ser difícil. Para evitar escribir el largo rsync comando en la terminal, puede crear un script BASH simple y llamarlo cada vez que desee iniciar la copia de seguridad.

Cree un script llamado home_dir_backup.sh :

$ nano home_dir_backup.sh

Agregue las siguientes líneas:

#!/usr/bin/env bash

# PURPOSE : RSYNC COMMAND TO BACKUP MY HOME DIRECTORY TO EXTERNAL DEVICE..
# REPLACE SOURCE, DESTINATION AND EXCLUDE ACCORDING TO YOUR ENVIRONMENT.

rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /media/karthick/"My Passport"/

Agregue, elimine o cambie las opciones de Rsync según sus requisitos. También cambie las rutas de origen y destino con las suyas propias. Guarde y cierre el archivo.

Haga que el script sea ejecutable:

$ chmod +x <path-to-home_dir_backup.sh>

Ahora ejecute el script en cualquier momento para iniciar la copia de seguridad del directorio $HOME:

$ ./path-to-home_dir_backup.sh

Use un nombre de script más corto para recordarlo fácilmente.

También puede crear un enlace suave para el archivo de script en /usr/bin o cualquier directorio específico del usuario que esté disponible en el $PATH variables.

2.4.3. Crear alias

La otra forma de evitar escribir comandos largos es usar alias .

Edite su ~/.bashrc archivo y agregue la siguiente línea al final:

alias backup="rsync -avxP --delete --exclude-from=/home/karthick/Work/Backup/ignore_list.txt /home/karthick /
media/karthick/"My Passport"/"

Fuente el bashrc para que los cambios surtan efecto inmediatamente:

$ source ~/.bashrc

Ahora simplemente ejecute el siguiente comando para hacer una copia de seguridad del directorio $HOME:

$ backup

Depende de ti decidir qué quieres usar. Puede crear un alias o crear una secuencia de comandos y ejecutar rsync activando la secuencia de comandos. En mi caso, creé un script y luego creé un alias para ese script.

3. Programar copia de seguridad

Puedes usar cron programador para programar trabajos de copia de seguridad para que se ejecuten a una hora determinada en un día determinado.

Edite los trabajos cron del usuario actual usando el comando

$ crontab -e

Defina su programa de copia de seguridad. Digamos, por ejemplo, para ejecutar la copia de seguridad todos los días a las 3 a. m. , use la siguiente línea:

0 3 * * * <rsync-command-to-execute>

Dependiendo de sus requisitos, puede programar trabajos diarios, semanales o mensuales.

Si es nuevo en Cron Jobs, hemos compilado una lista de ejemplos útiles de cron job para programar tareas en Linux. Para obtener más detalles sobre el uso de cron, consulte la siguiente guía.

  • Una guía para principiantes sobre los trabajos de Cron

4. Interfaces gráficas Rsync

Si es nuevo en Linux, puede que le resulte difícil entender todas las opciones y banderas de Rsync. ¡No hay problema! Hay algunas herramientas gráficas de interfaz para Rsync disponibles. Una de esas herramientas es Grsync. .

Grsync es una interfaz gráfica de usuario simple para Rsync. No tienes que memorizar ningún comando Rsync y sus opciones. Puede hacer todo a través de una GUI fácil de usar.

Para obtener más detalles, consulte la siguiente guía:

  • Grsync:una interfaz gráfica simple para Rsync

5. Conclusión

En esta guía, vimos cómo hacer copias de seguridad de archivos y directorios usando Rsync en Linux. Como puede ver, ¡copiar archivos y directorios con Rsync es muy fácil!

También le mostramos cómo hacer una copia de seguridad de su directorio de inicio usando el comando rsync y algunas de las formas de ejecutarlo y programarlo.

Este método también se puede aplicar a cualquier directorio o estructura de archivos en Linux para hacer una copia de seguridad de los datos. Si cree que tiene una mejor solución de copia de seguridad, nos encantaría saber de usted a través de la sección de comentarios a continuación.

Lectura relacionada:

  • Reanudar archivos transferidos parcialmente a través de SSH mediante Rsync
  • Cómo hacer copias de seguridad y restaurar archivos usando Deja Dup en Linux
  • Cómo configurar un servidor de respaldo usando Rsnapshot
  • Cómo sincronizar archivos con Unison en Linux
  • Cómo sincronizar directorios locales y remotos en Linux
  • Cómo sincronizar archivos y directorios usando Zaloha.sh
  • CYA:Utilidad de instantánea y restauración del sistema para Linux
  • Restic:una aplicación de copia de seguridad rápida, segura y eficiente

Linux
  1. Cómo hacer una copia de seguridad de todo su sistema Linux usando Rsync

  2. Cómo archivar archivos y directorios en Linux [Parte 2]

  3. Cómo archivar archivos y directorios en Linux [Parte 1]

  4. Cómo comprimir y extraer archivos y directorios en Linux usando gzip y bzip2

  5. Cómo encontrar y eliminar directorios y archivos vacíos en Linux

Cómo hacer una copia de seguridad y restaurar archivos usando Deja Dup en Linux

Cómo sincronizar archivos y directorios usando Zaloha.sh

Cómo hacer una copia de seguridad y restaurar archivos usando BorgBackup en Linux

Mantener los archivos y directorios de Linux sincronizados con rsync

Cómo copiar archivos y directorios en la terminal de Linux

Cómo eliminar archivos y directorios usando la línea de comandos de Linux