Objetivo:
Diseñar y automatizar un sistema de copias de seguridad (backup) comprimidas mediante scripts de terminal en Linux utilizando herramientas estándar como tar, gzip y la gestión de marcas de tiempo (timestamps).
Escenario:
- Herramientas: Terminal Linux,
tar,gzip,date,crontab(opcional), estructura de directorios de práctica. - Conceptos analizados: Empaquetado frente a compresión, rutas relativas y absolutas en respaldos, nomenclatura basada en fechas automáticas y políticas de retención básicas.
- Proceso clave: Creación de un directorio de origen con datos sensibles, desarrollo de un comando robusto de compresión con fecha dinámica y validación de la integridad del archivo resultante.
Escenario Real: Prevención ante fallos de servidor y pérdida de datos
Un servidor crítico de una pyme almacena diariamente la documentación contable y los códigos fuente de las aplicaciones internas. Ante un posible fallo de hardware o un ataque de ransomware, es vital disponer de un procedimiento automatizado que empaquete y comprima toda esta información en un único fichero protegido, añadiendo la fecha exacta en el nombre para facilitar su auditoría y restauración.
tar combinada con algoritmos como gzip (formato .tar.gz o .tgz). A diferencia de otros sistemas operativos, en Linux un archivo comprimido mantiene intactos los permisos de los archivos, los propietarios y la estructura de inodos original.
NOTA: Al programar o ejecutar respaldos, es fundamental evitar el uso de rutas absolutas al empaquetar (evitando que el comando empiece por / a menos que sea estrictamente necesario), ya que esto previene sobreescrituras accidentales al extraer el contenido y facilita restaurar los datos en ubicaciones alternativas de forma segura.
Instrucciones:
Fase 1: Preparación del entorno y datos de origen:
- Crear un directorio de trabajo y una estructura de prueba con archivos simulados:
mkdir -p ~/sistema_backup/origen ~/sistema_backup/destinocd ~/sistema_backup/origenecho "Datos financieros 2026" > contabilidad.txtecho "Configuración del servidor web" > servidor.conf
- Regresar al directorio principal de trabajo:
cd ~/sistema_backup
Fase 2: Creación manual del comando de respaldo comprimido con marca de tiempo:
- Para evitar sobreescribir copias anteriores, utilizaremos el comando
dateincrustado mediante sustitución de comandos en Bash para generar un nombre de archivo dinámico. - Ejecuta el siguiente comando para empaquetar y comprimir la carpeta
origendentro dedestino:tar -czvf destino/backup_$(date +%Y%m%d_%H%M%S).tar.gz origen/
- Desglose de los parámetros clave del comando
tar:-c(create): Crea un nuevo archivo empaquetado.-z(gzip): Comprime el archivo resultante utilizando el algoritmo gzip.-v(verbose): Muestra por pantalla la lista de archivos que se van añadiendo al paquete.-f(file): Especifica el nombre y ruta del archivo de salida resultante.
Fase 3: Verificación del contenido y prueba de integridad:
- Accede a la carpeta de destino:
cd destino - Lista los ficheros para comprobar que se ha generado un archivo comprimido con la fecha y hora actuales:
ls -l - Para comprobar el contenido del archivo comprimido sin necesidad de extraerlo en el disco, ejecuta:
tar -tzvf backup_*.tar.gz(el parámetro-tlista el contenido). - Comprueba la integridad técnica del archivo comprimido para asegurar que no está corrupto:
gzip -t backup_*.tar.gz(si no devuelve ningún mensaje de error, el archivo es totalmente íntegro).
Fase 4: Simulación de extracción y restauración:
- Crear un directorio temporal de pruebas para la restauración:
mkdir ~/sistema_backup/restauracion && cd ~/sistema_backup/restauracion - Extraer el archivo comprimido generado previamente dentro de esta nueva ubicación:
tar -xzvf ../destino/backup_*.tar.gz(el parámetro-xextrae los ficheros). - Verificar que los archivos originales se han recuperado correctamente con sus nombres y contenidos intactos:
ls -l origen/
Verificación:
- Ejecutar una comprobación visual de que la estructura de carpetas restauradas coincide exactamente con la original mediante el comando de listado recursivo:
ls -R ~/sistema_backup/restauracion
Posibles errores y resolución de problemas:
Si al intentar extraer un archivo comprimido la terminal devuelve un error del tipo tar: Child returned status 2 o tar: Error is not recoverable: exiting now, suele deberse a que el archivo está incompleto, truncado o se ha utilizado un parámetro de descompresión incorrecto.
Solución: Comprueba el tamaño real del archivo con
ls -lhpara asegurarte de que no pesa 0 bytes y verifica la integridad del archivo gzip ejecutandogzip -t nombre_archivo.tar.gzantes de volver a descomprimir.
Preguntas de reflexión:
- ¿Qué diferencia fundamental existe entre empaquetar un conjunto de archivos con
tary comprimirlos congzip? - ¿Por qué es una buena práctica añadir marcas de tiempo (timestamps dinámicos con
date) en los nombres de los archivos de copia de seguridad? - ¿Qué implicaciones tiene utilizar rutas absolutas (empezando por la barra inclinada inicial
/) frente a rutas relativas al empaquetar datos contar? - ¿Cómo contribuye el uso del parámetro
-zde manera integrada entara la eficiencia del almacenamiento en servidores Linux?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué diferencia fundamental existe entre empaquetar un conjunto de archivos con tar y comprimirlos con gzip?
El empaquetado con tar (Tape Archive) se encarga exclusivamente de agrupar múltiples ficheros y carpetas en un único archivo continuo, conservando los metadatos, permisos y estructuras, pero sin reducir su tamaño en disco. La compresión con gzip, en cambio, aplica un algoritmo matemático sobre ese paquete único para buscar redundancias y reducir al máximo el espacio físico que ocupa en el almacenamiento.
2. ¿Por qué es una buena práctica añadir marcas de tiempo (timestamps dinámicos con date) en los nombres de los archivos de copia de seguridad?
Porque permite generar nombres de ficheros únicos de forma automática en cada ejecución (por ejemplo, incluyendo año, mes, día, hora y minuto). Esto evita que una nueva copia de seguridad sobrescriba por accidente el archivo de respaldo anterior, facilitando además la gestión de históricos y políticas de retención temporal.
3. ¿Qué implicaciones tiene utilizar rutas absolutas (empezando por la barra inclinada inicial /) frente a rutas relativas al empaquetar datos con tar?
Si se empaqueta usando rutas absolutas, al extraer el archivo en el futuro, tar intentará recrear la ruta exacta partiendo de la raíz del sistema, lo cual puede sobrescribir archivos críticos ya existentes en el servidor de destino sin previo aviso. Al usar rutas relativas, el respaldo se extrae de manera segura dentro del directorio actual de trabajo donde se encuentre el operador en ese momento.
4. ¿Cómo contribuye el uso del parámetro -z de manera integrada en tar a la eficiencia del almacenamiento en servidores Linux?
Permite realizar ambas tareas (empaquetar y comprimir) en una sola pasada y mediante una única orden en la terminal, ahorrando tiempo de procesamiento, evitando la necesidad de crear archivos intermedios temporales sin comprimir en el disco duro y optimizando de forma directa el consumo de espacio de almacenamiento.