El Centinela de las Copias de Seguridad

LinuxBeginner
Practicar Ahora

Introducción

Eres el "Centinela de las Copias de Seguridad", el recién nombrado administrador de sistemas de una prometedora startup tecnológica. Un reciente y leve pico de tensión causó un fallo en el servidor, corrompiendo momentáneamente un archivo de registro no crítico. Aunque esta vez no se perdieron datos importantes, fue una seria llamada de atención.

El CTO te ha encomendado personalmente una misión crítica: implementar una estrategia robusta de copia de seguridad y recuperación para el servidor de aplicaciones principal de la empresa, y hacerlo hoy mismo. La integridad de los datos de los usuarios, las configuraciones de las aplicaciones y los registros vitales está ahora en tus manos.

Este es tu momento de brillar. Al crear, verificar y automatizar con éxito el proceso de copia de seguridad, no solo protegerás el activo más valioso de la empresa (sus datos), sino que también demostrarás ser un guardián indispensable de su infraestructura digital. El sistema está en funcionamiento y el reloj corre. Manos a la obra.

Aviso importante
Los próximos desafíos pueden exceder el alcance del curso Inicio rápido con Linux.
Si encuentras dificultades durante el desafío:
  1. Salta temporalmente el desafío y continúa con los laboratorios guiados posteriores en la ruta de aprendizaje de Linux.
  2. Consulta con Labby o revisa la solución.

Identificación de datos críticos para la copia de seguridad

Antes de crear una copia de seguridad, tu primera tarea es identificar qué datos son críticos. Una copia de seguridad completa del sistema suele ser poco práctica. Para nuestro servidor de aplicaciones, los activos más importantes se encuentran en los directorios data, config y logs.

Para que nuestro proceso de copia de seguridad sea limpio y manejable, crearemos un archivo que enumere todos los directorios que queremos respaldar. Esta lista servirá como manifiesto para nuestro script de copia de seguridad.

Tareas

  • Crea un archivo llamado backup-list.txt en el directorio ~/project.
  • Este archivo debe contener las rutas relativas a los tres directorios críticos, con cada ruta en una línea nueva.

Requisitos

  • El archivo debe llamarse exactamente backup-list.txt.
  • El archivo debe estar ubicado en el directorio ~/project.
  • El archivo debe contener las siguientes tres entradas, cada una en su propia línea:
    • data
    • config
    • logs

Ejemplos

Después de crear el archivo backup-list.txt, tu directorio de proyecto debería contener el nuevo archivo de manifiesto junto a los directorios existentes:

~/project/
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/

Cuando ejecutes cat backup-list.txt, deberías ver los tres directorios críticos listados:

data
config
logs

Consejos

  • Puedes usar un editor de texto como nano para crear y editar el archivo.
  • Alternativamente, puedes usar el comando echo con redirección de salida (>) para crear el archivo y >> para añadir contenido al final.

Creación de un archivo de copia de seguridad completo del sistema

Con la lista de directorios críticos lista, es hora de crear el archivo de copia de seguridad. La herramienta estándar de Linux para este trabajo es tar (Tape Archive). Puede agrupar múltiples archivos y directorios en un solo archivo. También comprimiremos el archivo para ahorrar espacio usando gzip.

Tareas

  • Usa el comando tar para crear un archivo de copia de seguridad comprimido.
  • El archivo debe llamarse system-backup.tar.gz.
  • El archivo debe colocarse en el directorio ~/project/backups/.
  • El contenido del archivo debe estar determinado por el archivo backup-list.txt que creaste en el paso anterior.

Requisitos

  • El archivo final debe estar ubicado en ~/project/backups/system-backup.tar.gz.
  • Debes usar el comando tar.
  • Debes usar la opción -T con tar para leer la lista de archivos/directorios desde backup-list.txt.
  • El archivo debe estar comprimido con gzip (usa la opción z en tar).

Ejemplos

Después de crear el archivo de copia de seguridad, tu directorio backups debería contener el nuevo archivo comprimido:

~/project/backups/
└── system-backup.tar.gz

Cuando ejecutes ls -lh ~/project/backups/, deberías ver el archivo con su tamaño:

-rw-rw-r-- 1 labex labex 1.2K Sep 11 15:08 system-backup.tar.gz

Consejos

  • Las opciones comunes para crear un archivo comprimido con tar son c (create), z (compress with gzip), v (verbose, para ver el progreso) y f (especificar nombre de archivo).
  • La opción -T le dice a tar que obtenga los nombres de los archivos a archivar del archivo que sigue, en lugar de la línea de comandos.
  • La estructura del comando se verá algo así como tar -czvf [nombre_archivo] -T [archivo_lista].

Verificación de la integridad de la copia de seguridad

Una copia de seguridad es inútil si está corrupta o incompleta. Un paso crucial en cualquier estrategia de copia de seguridad es la verificación. Debes asegurarte de que el archivo que creaste contiene todos los archivos previstos y es legible.

Tareas

  • Usa el comando tar para listar el contenido del archivo system-backup.tar.gz sin extraerlo.
  • Redirige la salida de este comando a un nuevo archivo llamado backup-contents.txt en el directorio ~/project.

Requisitos

  • Debes crear un archivo llamado backup-contents.txt en ~/project.
  • Este archivo debe contener la lista de todos los archivos y directorios almacenados dentro de system-backup.tar.gz.
  • No extraigas los archivos; solo lístalos.

Ejemplos

Después de crear el archivo de verificación, tu directorio de proyecto debería contener el nuevo archivo backup-contents.txt:

~/project/
├── backup-contents.txt
├── backup-list.txt
├── backups/
├── config/
├── data/
└── logs/

Cuando ejecutes cat backup-contents.txt, deberías ver un listado detallado de todos los archivos en el archivo comprimido:

drwxrwxr-x labex/labex       0 2025-09-11 15:08 data/
-rw-rw-r-- labex/labex      46 2025-09-11 15:08 data/transactions.csv
drwxrwxr-x labex/labex       0 2025-09-11 15:08 config/
-rw-rw-r-- labex/labex      72 2025-09-11 15:08 config/app.conf
drwxrwxr-x labex/labex       0 2025-09-11 15:08 logs/
-rw-rw-r-- labex/labex      49 2025-09-11 15:08 logs/app.log

Consejos

  • El comando tar tiene una opción para listar (t) el contenido de un archivo.
  • Combina la opción t con z (para gzip), v (para una lista detallada) y f (para especificar el archivo).
  • Usa el operador de redirección de salida > para guardar la salida del comando en un archivo.

Restauración de archivos desde una copia de seguridad

¡Ha ocurrido un desastre! Un desarrollador junior, mientras intentaba liberar algo de espacio, ha borrado accidentalmente el archivo de configuración principal de la aplicación, app.conf. La aplicación está caída. Depende de ti, el Centinela de las Copias de Seguridad, restaurar este archivo crítico desde tu copia de seguridad y salvar el día.

Tareas

  1. Primero, simula el accidente borrando el archivo config/app.conf.
  2. Luego, usa el comando tar para restaurar solo el archivo config/app.conf desde tu archivo system-backup.tar.gz. El archivo debe restaurarse en su ubicación original.

Requisitos

  • El archivo ~/project/config/app.conf debe estar presente después de completar la tarea.
  • Debes extraer solo el archivo config/app.conf, no todo el archivo comprimido.

Ejemplos

Después de restaurar el archivo app.conf, tu directorio config debería contener el archivo restaurado:

~/project/config/
├── app.conf
└── ...

Cuando ejecutes ls -l ~/project/config/app.conf, deberías ver el archivo restaurado:

-rw-rw-r-- 1 labex labex 72 Sep 11 15:08 /home/labex/project/config/app.conf

Puedes verificar que el contenido del archivo es correcto comprobando que contiene la configuración esperada:

## Esto debería mostrar la configuración de la base de datos y la clave API
cat ~/project/config/app.conf

Consejos

  • El comando rm se usa para borrar archivos.
  • El comando tar usa la opción x para extraer archivos.
  • Para extraer un archivo específico, puedes añadir su ruta (tal como aparece en el archivo comprimido) al final del comando tar -x.
  • La ruta completa al archivo dentro del archivo comprimido es config/app.conf.

Programación de tareas de copia de seguridad automatizadas

Has salvado el día, pero el trabajo de un héroe nunca termina. Depender de copias de seguridad manuales es arriesgado. El paso final es automatizar el proceso para que las copias de seguridad se creen regularmente sin intervención humana. Para esto, usaremos cron, el programador de tareas estándar de Linux.

Tareas

  • Crea un trabajo cron que ejecute automáticamente un comando de copia de seguridad.
  • El trabajo debe ejecutarse cada minuto (para los propósitos de este desafío).
  • El comando debe crear un nuevo archivo tar comprimido dentro del directorio ~/project/backups/.
  • Para evitar sobrescrituras, cada nuevo archivo de copia de seguridad debe tener un nombre único que incluya una marca de tiempo (por ejemplo, backup-2023-10-27_15-30-00.tar.gz).

Requisitos

  • Debes usar crontab -e para editar tus trabajos cron.
  • La programación cron debe ser * * * * * para ejecutarse cada minuto.
  • El comando de copia de seguridad dentro del trabajo cron debe usar rutas absolutas para el directorio de salida y los directorios de origen (por ejemplo, /home/labex/project/backups).
  • El nombre del archivo de copia de seguridad debe incluir una marca de tiempo.

Ejemplos

Después de configurar el trabajo cron, puedes verificar que funciona comprobando tu crontab y esperando a que aparezcan las copias de seguridad automáticas. Cuando ejecutes crontab -l, deberías ver tu nuevo trabajo de copia de seguridad:

## Ejemplo de salida (tu comando exacto puede variar)
* * * * * tar -czf /home/labex/project/backups/backup-$(date +\%Y-\%m-\%d_\%H-\%M-\%S).tar.gz -C /home/labex/project data config logs

Después de un minuto o dos, tu directorio backups debería empezar a mostrar archivos de copia de seguridad con marca de tiempo:

~/project/backups/
├── backup-2025-09-11_15-30-00.tar.gz
├── backup-2025-09-11_15-31-00.tar.gz
├── backup-2025-09-11_15-32-00.tar.gz
└── system-backup.tar.gz

Consejos

  • Ejecuta crontab -e para abrir el editor de trabajos cron. Es posible que se te pida seleccionar un editor; nano es una buena opción.
  • El formato para un trabajo cron es: [minuto] [hora] [día_del_mes] [mes] [día_de_la_semana] [comando]. * * * * * significa cada minuto de cada hora de cada día.
  • Puedes usar el comando date para generar una marca de tiempo. Por ejemplo, date +%Y-%m-%d_%H-%M-%S producirá un formato como 2023-10-27_15-30-00.
  • Para usar la salida de un comando dentro de otro comando, usa $(comando).
  • Importante: En un crontab, el signo de porcentaje (%) tiene un significado especial (se trata como una nueva línea). Debes escaparlo con una barra invertida (\%) cuando lo uses con el comando date.
  • Tu comando final en el crontab podría verse así: * * * * * tar -czf /ruta/a/backup-$(date +\%F_\%T).tar.gz -C /ruta/a/origen dir1 dir2

Resumen

¡Felicidades, Centinela! Has diseñado e implementado con éxito una estrategia completa y automatizada de copia de seguridad y recuperación. Los datos de la empresa están ahora seguros, gracias a tu diligencia y habilidad. No solo has evitado una crisis potencial, sino que también has establecido un sistema que protegerá a la empresa en el futuro.

En este desafío, has dominado varias habilidades fundamentales de administración de sistemas:

  • Identificación de datos críticos: Determinar qué necesita ser respaldado.
  • Creación de archivos: Usar el comando tar para crear copias de seguridad comprimidas.
  • Verificación de integridad: Asegurar que las copias de seguridad sean válidas y completas.
  • Realización de restauraciones: Extraer archivos específicos para recuperarse de la pérdida de datos.
  • Automatización de tareas: Programar trabajos cron para copias de seguridad regulares y desatendidas.

Estas son habilidades esenciales y reales para cualquier administrador de sistemas Linux, desarrollador o ingeniero DevOps. Has demostrado que tienes lo necesario para ser un guardián fiable de sistemas críticos.

✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar✨ Revisar Solución y Practicar