En el mundo de TI, es importante mantener una copia de sus datos como sea posible para utilizarlos cuando sea necesario en caso de falla del disco o cuando se eliminen por error. Por lo tanto, realizar una copia de seguridad periódica al final del día es una buena práctica de un usuario responsable de la computadora.
El comando 'rsync' se usa normalmente para copiar datos grandes. Sin embargo, el comando 'cp' también se usa cuando se copia una pequeña cantidad de directorios y archivos en una máquina local.
En este artículo, aprenderemos cómo podemos hacer copias de seguridad de archivos y carpetas en Debian 10.
Requisito previo
Debe tener lo siguiente para que este tutorial funcione.
1. Dos máquinas Debian 10 con privilegios de root
Copia de seguridad de directorios con el comando cp
El primer comando que vamos a discutir es el 'cp'. Se utiliza para copiar una pequeña cantidad de archivos y carpetas en una máquina local. Por lo tanto, prácticamente no se utiliza en la industria.
La sintaxis del comando 'cp' es la siguiente.
cp -option1 -option2 fuente destino
Para que se entienda, vamos a copiar los archivos del Escritorio/log a Karim/logrot. Ejecute el siguiente comando en la terminal.
cp -avr Desktop/log Karim/logro
a:Se utiliza para conservar los atributos del directorio, como el modo de archivo, la propiedad, las marcas de tiempo, etc.
r:Se usa para copiar recursivamente los directorios que están dentro del directorio principal
v:se utiliza para verbosar la salida
El siguiente es el resultado de muestra.
Si desea copiar todos los archivos, directorios y subdirectorios a otro directorio, puede usar el comodín *. Por ejemplo, el siguiente comando copiará todos los datos de un directorio existente Desktop/log/ a Karim/logro/.
cp -avr Desktop/log/* Karim/logro/
El siguiente es el resultado de muestra.
Copia de seguridad de directorios con rysnc
Como ya hemos dicho, el comando más utilizado para realizar copias de seguridad de archivos y carpetas es el 'rsync'. Por lo tanto, analicemos qué es y cómo se usa.
¿Qué es rysnc?
Rsync significa sincronización remota y fue escrito por Andrew Tridgell y Paul Mackerras el 19 de junio de 1996. Es un comando eficiente para la sincronización y transferencia de archivos entre máquinas locales y de red. Está disponible por defecto en la mayoría de los sistemas. Sin embargo, puede instalarlo con la ayuda de los siguientes comandos simples si no está disponible (Ejecute los comandos con privilegios de root).
apt-get update
apt-get install rsync
También debe tener un cliente y un servidor ssh instalados en ambas máquinas de la red antes de sincronizar los datos. Ejecute los siguientes comandos con privilegios de raíz en ambas máquinas Debian 1o.
apt-get install ssh
Copia de seguridad de directorios en la máquina local
La sintaxis básica al sincronizar archivos en la máquina local es la siguiente.
opción rsync directorio-fuente directorio-destino
Si desea conservar los metadatos como la propiedad, los permisos, la fecha de creación, etc., debe usar la opción -a. Si desea copiar recursivamente los directorios dentro del directorio, debe usar la opción -r.
rsync -ar directorio de origen directorio de destino
De manera similar, si desea ver el progreso mientras la sincronización está en curso, use la opción -v. Los comandos deberían ser como sigue,
rsync -avr directorio de origen directorio de destino
Supongamos que queremos sincronizar archivos y carpetas ubicados en Desktop/log con Karim/logro, el comando debería tener el siguiente aspecto.
rsync -avr Desktop/log Karim/logro
El siguiente es el resultado de muestra.
Analicemos un ejemplo más y digamos que tenemos una carpeta data-1 ubicada en el disco duro 1 (/media/hdd1/data-1) y desea sincronizarla con el segundo disco duro en /media/hdd2/. El comando completo debería tener el siguiente aspecto.
rsync -avr /medios/hdd1/datos-1 /medios/hdd2/
Cuando se ejecute el comando, se creará un directorio data-1 en el segundo disco duro y se copiará todo el contenido en la ruta de destino /media/hdd2/.
Copia de seguridad de archivos y directorios a través de la red
La sintaxis es ligeramente diferente cuando se transfieren datos a través de la red. Cuando desee sincronizar un directorio local con un directorio remoto, el comando debería tener el siguiente aspecto.
rsync [-options] PathofSourceFolder [email protected]:PathofDestinationFolder
Supongamos que tengo una carpeta de prueba ubicada dentro de mi máquina local en /home/karim/testfolder y quiero sincronizarla en /home/karim. El usuario remoto es 'karim' y la dirección IP de la máquina es 10.1.1.2. Ejecute el siguiente comando en la terminal.
rsync -avr /home/karim/testfolder [email protected]:/home/karim/
Tan pronto como ejecute este comando, se le pedirá que ingrese la contraseña de la máquina remota.
A continuación se muestra el resultado de muestra después de sincronizar el directorio.
Cuando desee sincronizar un directorio remoto con un directorio local, el comando debería tener el siguiente aspecto.
rsync [-options] [email protected]:PathofSourceFolder PathofDestinationFolder
Supongamos que tenemos una carpeta remota 'carpeta de prueba' ubicada en /home/karim/ y quiero sincronizar con la máquina local en la ubicación /home/karim/. La dirección IP de la máquina remota es 10.1.1.2 y el nombre de usuario es karim.
Ejecute el siguiente comando en la terminal.
rsync -avr [email protected]:/home/karim/ /home/karim/testfolder
A continuación se muestra el resultado de muestra.
Cómo automatizar la copia de seguridad
Es más conveniente automatizar la copia de seguridad para que los ingenieros de sistemas no tengan que preocuparse por ejecutar manualmente los comandos y realizar las copias de seguridad todos los días.
Hay una herramienta famosa llamada 'crontab' en Linux que se utiliza para automatizar el proceso de copia de seguridad. Podemos programar para ejecutar todos los comandos anteriores diariamente, semanalmente o mensualmente. Si no ha instalado crontab en su distribución de Linux, ejecute los siguientes comandos en la terminal con privilegios sudo.
apt-get update
apt-get install cron
Una vez que haya instalado crontab, ejecute el siguiente comando en la terminal para abrir el editor crontab.
crontab -e
La salida de muestra debería tener el siguiente aspecto.
El crontab tiene los siguientes cinco campos,
m h dm m dw comando
m:especifica los minutos (0-59)
h:especifica la hora (0-23)
dm:especifica el día del mes (1-31)
m:especifica el mes (1-12)
dw:especifica el día de la semana (0-6 donde 0 es domingo)
Tomemos un ejemplo anterior de sincronización de un directorio de un disco a otro y digamos que queremos hacer esto todos los días a las 12 p. m., el trabajo cron debería ser el siguiente.
0 0 * * * rsync -avr /media/hdd1/data-1 /media/hdd2/
Suponga que desea realizar una copia de seguridad todos los meses los domingos a las 12 p. m., el trabajo cron debe escribirse de la siguiente manera.
0 0 1 * * rsync -avr /media/hdd1/data-1 /media/hdd2/
Conclusión
Ha leído cómo podemos hacer una copia de seguridad usando el comando extremadamente poderoso 'rysnc'. Hemos concluido el artículo con un 'crontab'. 'rsync' y 'crontab' también son una combinación útil.