Cómo hacer un script sencillo de copia de seguridad en Linux

NOTA: Recuerda darle permisos de ejecución antes de ejecutarlo: chmod +x nombreScript.sh
Para ejecutarlo (debes guardarlo en tu carpeta de usuario), escribe en la terminal: ./nombreScript.sh

Script de copia de seguridad (un ejemplo)

#!/bin/bash
echo "Se va a realizar una copia de seguridad de la carpeta /Documentos/Debian_Docs al dispositivo externo, 64GB y disco 500GB. Se creará un archivo de registro en ambos"
cp -r -u -v /home/guillermo/Documentos/Debian_Docs /media/usb64 2>&1 | tee -a /media/usb64/logfile.log
cp -r -u -v /home/guillermo/Documentos/Debian_Docs /media/500gb2 2>&1 | tee -a /media/500gb2/logfile.log
echo "Copia realizada. Puedes cerrar esta terminal."

Sustituye el origen y el destino por los tuyos.

Veamos un pequeño vídeo al respecto:

  • Paso 1: Entender el comando cp: cp es el comando utilizado para copiar archivos y directorios en Linux.
  • Paso 2: Opciones del comando -r: Esta opción significa "recursivo". Se utiliza para copiar directorios y su contenido, incluyendo subdirectorios y archivos dentro de ellos. -u: Esta opción significa "actualizar". Solo copia los archivos que son más nuevos que los que ya existen en el destino o que no están presentes en el destino. Esto ayuda a evitar copias innecesarias. -v: Esta opción significa "verbose" (detallado). Muestra en la terminal los archivos que se están copiando, lo que permite ver el progreso de la copia.
  • Paso 3: Especificar las rutas /home/guillermo/Documentos/Debian_Docs: Esta es la ruta de origen, donde se encuentran los archivos y directorios que deseas copiar. /media/usb64: Esta es la ruta de destino, donde se copiarán los archivos. En este caso, es un dispositivo USB montado.
  • Paso 4: Redirección de salida 2>&1: Esto redirige los mensajes de error (stderr) al mismo lugar que la salida estándar (stdout). Así, tanto los mensajes de error como los de progreso se enviarán al mismo flujo.
  • Paso 5: Uso de tee | tee -a /media/usb64/logfile.log: El símbolo | se utiliza para canalizar la salida del comando anterior al siguiente comando.
    tee: Este comando toma la entrada y la escribe tanto en la salida estándar (pantalla) como en un archivo.
    -a: Esta opción significa "anexar". Si el archivo logfile.log ya existe, los nuevos datos se agregarán al final del archivo en lugar de sobrescribirlo.

Resumen del Proceso

  • Copia los archivos y directorios de /ORIGEN a /DESTINO.
  • Muestra en la terminal qué archivos se están copiando.
  • Registra tanto la salida normal como los errores en el archivo logfile.log en el DESTINO (en el ejemplo, un dispositivo USB).