La administración profesional de un sistema Linux se sustenta sobre dos pilares fundamentales: disponer siempre de copias de seguridad fiables y saber gestionar el software instalado de forma limpia y controlada. En esta guía aprenderás a dominar las herramientas de backup — desde tar y rsync hasta BorgBackup — y los sistemas de paquetes que permiten instalar, actualizar y eliminar software en cualquier distribución Linux.
💾 Por qué las copias de seguridad son vitales
Los datos son el activo más valioso de cualquier sistema. Un disco duro puede fallar sin previo aviso, un error humano puede borrar un directorio crítico, un ataque de ransomware puede cifrar toda tu información. Sin copias de seguridad, la pérdida es irreversible.
En entornos profesionales, la pérdida de datos puede suponer desde horas de trabajo desperdiciadas hasta la quiebra de una empresa. Según estudios del sector, el 60 % de las pequeñas empresas que sufren una pérdida significativa de datos cierran en los 6 meses siguientes. Linux ofrece herramientas de backup potentes, gratuitas y altamente configurables que, combinadas con una buena estrategia, protegen contra prácticamente cualquier escenario de desastre.
Las copias de seguridad son la única garantía real contra la pérdida de datos. Un buen administrador Linux programa backups automáticos como parte esencial de su infraestructura. Foto: Pexels.
⚠️ La regla de oro
Un backup que no se ha probado restaurar no es un backup: es una esperanza. Siempre verifica que puedes restaurar tus copias antes de necesitarlas.
📋 Tipos de copias de seguridad
Antes de elegir una herramienta, necesitas conocer los tipos de backup disponibles y cuándo usar cada uno:
Tipo
Qué copia
Ventajas
Inconvenientes
Ideal para
Completa
Todos los archivos
Restauración rápida y sencilla
Más espacio y tiempo
Backup semanal o inicial
Incremental
Solo lo cambiado desde el último backup
Muy rápida, mínimo espacio
Restauración lenta (necesita toda la cadena)
Backup diario
Diferencial
Lo cambiado desde la última copia completa
Restauración más rápida que incremental
Crece con el tiempo
Backup diario con restauración rápida
Espejo
Réplica exacta del origen
Sincronización inmediata
Borrados se replican (sin historial)
Replicación en tiempo real
💡 Estrategia habitual
La combinación más común en producción: una copia completa semanal (por ejemplo, cada domingo) más copias incrementales diarias (lunes a sábado). Así equilibras velocidad, espacio y facilidad de restauración.
📦 tar: empaquetado y compresión
tar (Tape ARchive) es la herramienta clásica de empaquetado en Unix/Linux. Aunque su nombre hace referencia a cintas magnéticas, hoy se usa para crear archivos comprimidos que agrupan múltiples ficheros y directorios en uno solo.
Sintaxis fundamental
terminal — opciones esenciales de tar
# Opciones principales de tar:
# -c crear archivo (Create)
# -x extraer archivo (eXtract)
# -t listar contenido (lisT)
# -v modo detallado (Verbose)
# -f especificar nombre del archivo (File)
# -z comprimir con gzip (.tar.gz)
# -j comprimir con bzip2 (.tar.bz2)
# -J comprimir con xz (.tar.xz)
# -p preservar permisos (Permissions)
Crear copias de seguridad con tar
terminal — crear backups con tar
# Backup completo de /home comprimido con gzip
tar -zcvpf /backups/home_$(date +%Y%m%d).tar.gz /home/
# Backup comprimido con xz (mejor compresión, más lento)
tar -Jcvpf /backups/etc_$(date +%Y%m%d).tar.xz /etc/
# Backup excluyendo directorios del sistema
tar -zcvpf /backups/sistema_completo.tar.gz \
--exclude=/proc \
--exclude=/sys \
--exclude=/tmp \
--exclude=/dev \
--exclude=/run \
--exclude=/mnt \
--exclude=/backups \
/
# Backup incremental: solo archivos modificados en 24h
find /home -mtime -1 -print0 | tar -zcvpf /backups/home_incremental.tar.gz --null -T -
Restaurar copias con tar
terminal — restaurar backups
# Listar contenido sin extraer (verificar antes de restaurar)
tar -ztvf /backups/home_20260227.tar.gz
# Restaurar todo en el directorio actual
tar -zxvpf /backups/home_20260227.tar.gz
# Restaurar en un directorio específico
tar -zxvpf /backups/home_20260227.tar.gz -C /tmp/restauracion/
# Restaurar solo un archivo concreto
tar -zxvpf /backups/home_20260227.tar.gz home/usuario/documentos/informe.pdf
Formato
Extensión
Compresión
Velocidad
Cuándo usar
gzip
.tar.gz
Buena
Rápida
Uso general, backups diarios
bzip2
.tar.bz2
Mejor
Media
Archivos de texto, logs
xz
.tar.xz
La mejor
Lenta
Archivos grandes, distribución
zstd
.tar.zst
Muy buena
Muy rápida
Mejor equilibrio general
✅ Consejo profesional
Si tu sistema tiene zstd (Ubuntu 20.04+, Fedora 31+), úsalo: tar --zstd -cvpf backup.tar.zst /datos/. Compresión similar a gzip pero significativamente más rápido.
🔄 rsync: sincronización inteligente
rsync es posiblemente la herramienta de backup más potente de Linux. A diferencia de tar, que siempre copia todo, rsync analiza origen y destino y transfiere solo las diferencias, siendo extraordinariamente eficiente para backups regulares.
terminal — rsync esencial
# Sincronizar /home/ a un directorio de backup local
rsync -avh --progress /home/ /backups/home/
# Opciones clave:
# -a modo archivo (preserva permisos, timestamps, symlinks)
# -v verbose -h tamaños legibles (human-readable)
# --progress barra de progreso por archivo
# --delete eliminar en destino lo que ya no existe en origen
# Backup a disco externo
rsync -avh --delete /home/ /mnt/backup/home/
# Backup remoto vía SSH
rsync -avhz -e ssh /home/ usuario@servidor:/backups/home/
# Excluir archivos o directorios
rsync -avh \
--exclude='.cache' \
--exclude='*.tmp' \
--exclude='node_modules' \
/home/dev/ /backups/dev/
# Simulación (--dry-run): ver qué haría sin ejecutar
rsync -avhn --delete /home/ /backups/home/
⚠️ Cuidado con la barra final
En rsync, la barra final hace diferencia: rsync -av /home /backup/ crea /backup/home/, mientras que rsync -av /home/ /backup/ copia el contenido de /home dentro de /backup/. Prueba siempre con --dry-run.
Script de backup profesional con rsync
backup_rsync.sh — script con rotación
#!/bin/bash
# ============================================
# Script de backup con rsync y rotación
# ============================================
ORIGEN="/home/"
DESTINO="/backups/home"
LOG="/var/log/backup_rsync.log"
RETENCION=30 # Días de retención
FECHA=$(date +%Y%m%d_%H%M)
BACKUP_DIR="${DESTINO}/${FECHA}"
ULTIMO="${DESTINO}/ultimo"
echo "[$(date)] Iniciando backup..." >> "${LOG}"
# Crear backup incremental usando hard links al anterior
rsync -avh --delete \
--link-dest="${ULTIMO}" \
--exclude='.cache' \
--exclude='*.tmp' \
"${ORIGEN}" "${BACKUP_DIR}/" >> "${LOG}" 2>&1
# Actualizar enlace simbólico al último backup
rm -f "${ULTIMO}"
ln -s "${BACKUP_DIR}" "${ULTIMO}"
# Eliminar backups antiguos
find "${DESTINO}" -maxdepth 1 -type d -mtime +${RETENCION} -exec rm -rf {} \;
echo "[$(date)] Backup completado: ${BACKUP_DIR}" >> "${LOG}"
💡 El truco de --link-dest
La opción --link-dest es la joya oculta de rsync. Crea hard links a archivos sin cambios, de modo que cada backup parece una copia completa (puedes navegar y restaurar archivos individualmente) pero solo ocupa espacio por lo realmente modificado. Lo mejor de ambos mundos.
🔧 dd: copias bit a bit de discos
dd (Data Duplicator) trabaja a nivel de bloques, copiando datos bit a bit. Es perfecto para clonar discos completos, crear imágenes de particiones o respaldar el sector de arranque.
terminal — dd para backups de bajo nivel
# Clonar un disco completo a otro
sudo dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync status=progress
# Crear imagen de una partición
sudo dd if=/dev/sda1 of=/backups/sda1.img bs=64K status=progress
# Crear imagen comprimida
sudo dd if=/dev/sda bs=64K status=progress | gzip -c > /backups/disco.img.gz
# Restaurar desde imagen comprimida
gunzip -c /backups/disco.img.gz | sudo dd of=/dev/sda bs=64K status=progress
# Backup del MBR (sector de arranque, primeros 512 bytes)
sudo dd if=/dev/sda of=/backups/mbr_backup.bin bs=512 count=1
⚠️ dd es peligroso: sin confirmación
dd ejecuta exactamente lo que le dices sin pedir confirmación. Un error en if= y of= puede destruir un disco en segundos (de ahí el apodo «Disk Destroyer»). Verifica tres veces los dispositivos con lsblk antes de ejecutar.
🏛️ La regla 3-2-1 de backups
La regla 3-2-1 es el estándar de oro de la industria para copias de seguridad:
Un ejemplo práctico de la regla 3-2-1 en Linux: copia original en el servidor de producción, backup diario con rsync a un NAS local (segundo medio) y backup semanal cifrado a un servidor remoto o servicio en la nube como Backblaze B2 o AWS S3 (copia offsite).
✅ Versión moderna: 3-2-1-1-0
Algunos profesionales amplían la regla: 3 copias, 2 medios, 1 offsite, 1 copia offline/inmutable (protección contra ransomware), y 0 errores verificados en la restauración. La copia inmutable es especialmente importante ante ataques que intentan cifrar también los backups.
🛡️ Herramientas profesionales de backup
Más allá de tar y rsync, existen herramientas especializadas que añaden deduplicación, cifrado, verificación de integridad y gestión avanzada de repositorios de backup:
Herramienta
Tipo
Deduplicación
Cifrado
Ideal para
BorgBackup
CLI, deduplicación
✅ Excelente
✅ AES-256
Servidores, datos grandes
restic
CLI, multi-backend
✅ Buena
✅ AES-256
Backup a nube (S3, B2)
Duplicity
CLI, incremental cifrado
Parcial
✅ GPG
Backups cifrados remotos
Timeshift
GUI, snapshots
✅ (rsync mode)
❌
Escritorio, snapshots del sistema
Bacula/Bareos
Cliente-servidor
Parcial
✅ TLS
Infraestructuras empresariales
BorgBackup: el referente actual
BorgBackup (o simplemente Borg) es la herramienta de backup más recomendada para Linux en la actualidad. Su sistema de deduplicación reduce drásticamente el espacio necesario: si 100 archivos comparten el 95 % de su contenido, Borg almacena los datos comunes una sola vez.
terminal — BorgBackup paso a paso
# 1. Instalar BorgBackup
sudo apt install borgbackup # Debian/Ubuntu
sudo dnf install borgbackup # Fedora/RHEL
# 2. Inicializar repositorio cifrado
borg init --encryption=repokey /backups/borg-repo
# 3. Crear un backup
borg create --stats --progress \
/backups/borg-repo::backup-{now:%Y%m%d-%H%M} \
/home/ /etc/ \
--exclude '/home/*/.cache'
# 4. Listar backups disponibles
borg list /backups/borg-repo
# 5. Restaurar un backup completo
borg extract /backups/borg-repo::backup-20260227-0300
# 6. Restaurar un archivo concreto
borg extract /backups/borg-repo::backup-20260227-0300 \
home/usuario/documentos/informe.pdf
# 7. Podar backups antiguos (retención inteligente)
borg prune --keep-daily=7 --keep-weekly=4 --keep-monthly=6 \
/backups/borg-repo
# 8. Verificar integridad del repositorio
borg check /backups/borg-repo
💡 Deduplicación en acción
Con Borg, si haces un backup diario de 50 GB de datos donde solo cambian 200 MB al día, el primer backup ocupa ~50 GB, pero cada backup incremental posterior solo necesita ~200 MB + metadatos. Tras un mes, en vez de 1,5 TB tendrás ~56 GB. La deduplicación funciona a nivel de bloque, no de archivo, así que detecta cambios incluso dentro de archivos grandes.
Los discos duros mecánicos tienen partes móviles que se desgastan con el uso. Sin copias de seguridad, un fallo mecánico puede significar la pérdida total e irrecuperable de los datos. Foto: Pexels.
📦 Qué son los paquetes de software
En Linux, el software se distribuye mediante paquetes: archivos que contienen el programa compilado, sus archivos de configuración, documentación y metadatos que describen las dependencias necesarias (qué otros paquetes necesita para funcionar).
A diferencia de Windows, donde cada programa trae su propio instalador independiente, en Linux los paquetes se obtienen de repositorios centralizados mantenidos por la distribución. Esto aporta enormes ventajas: seguridad (el software está verificado), consistencia (las dependencias se resuelven automáticamente) y facilidad de actualización (un solo comando actualiza todo el sistema).
Las herramientas de bajo nivel (dpkg, rpm) instalan paquetes individuales sin resolver dependencias. Las de alto nivel (apt, dnf) trabajan sobre ellas añadiendo descarga desde repositorios, resolución automática de dependencias y actualizaciones del sistema completo. En la práctica diaria usarás las de alto nivel.
🐧 APT: gestión de paquetes en Debian/Ubuntu
APT (Advanced Package Tool) es el sistema de gestión de paquetes más extendido, utilizado por Debian y todas sus derivadas (Ubuntu, Linux Mint, Pop!_OS y muchas más). Es potente, fiable y fácil de usar.
terminal — APT: operaciones esenciales
# ── Actualizar el sistema ──
sudo apt update # Actualizar lista de paquetes disponibles
sudo apt upgrade # Instalar actualizaciones disponibles
sudo apt full-upgrade # Upgrade incluyendo cambios de dependencias
sudo apt autoremove # Eliminar paquetes huérfanos
# ── Instalar y eliminar software ──
sudo apt install firefox # Instalar un paquete
sudo apt install -y vimgit # Instalar varios sin pedir confirmación
sudo apt remove firefox # Eliminar paquete (mantiene config)
sudo apt purge firefox # Eliminar paquete + archivos de configuración
# ── Buscar e investigar paquetes ──
apt search "editor de texto" # Buscar paquetes por nombre o descripción
apt show vim # Ver información detallada de un paquete
apt list --installed # Listar todos los paquetes instalados
apt list --upgradable # Ver qué paquetes tienen actualización
# ── dpkg: operaciones de bajo nivel ──
sudo dpkg -i paquete.deb # Instalar un .deb descargado manualmente
dpkg -l # Listar todos los paquetes instalados
dpkg -L vim # Ver qué archivos instaló un paquete
dpkg -S /usr/bin/vim # ¿A qué paquete pertenece este archivo?
Gestión de repositorios
terminal — repositorios APT
# Ver repositorios configurados
cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/
# Añadir un PPA (Personal Package Archive) en Ubuntu
sudo add-apt-repository ppa:usuario/repositorio
sudo apt update
# Añadir un repositorio externo con clave GPG (método moderno)
curl -fsSL https://ejemplo.com/clave.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/ejemplo.gpg
echo "deb [signed-by=/etc/apt/keyrings/ejemplo.gpg] https://ejemplo.com/repo stable main" \
| sudo tee /etc/apt/sources.list.d/ejemplo.list
sudo apt update
# Fijar una versión específica (apt pinning)
sudo apt install paquete=1.2.3-1
sudo apt-mark hold paquete # Evitar que se actualice
sudo apt-mark unhold paquete # Permitir actualizaciones de nuevo
✅ apt vs apt-get
apt es la interfaz moderna (más bonita, con barras de progreso) diseñada para uso interactivo. apt-get es la interfaz clásica, más estable para scripts. Ambas hacen lo mismo internamente. Para el día a día, usa apt; para scripts de automatización, usa apt-get.
🎩 DNF: gestión de paquetes en Fedora/RHEL
DNF (Dandified YUM) es el gestor de paquetes de las distribuciones de la familia Red Hat: Fedora, RHEL (Red Hat Enterprise Linux), Rocky Linux, AlmaLinux y CentOS Stream. Sustituye a YUM desde Fedora 22 y RHEL 8.
terminal — DNF: operaciones esenciales
# ── Actualizar el sistema ──
sudo dnf check-update # Ver actualizaciones disponibles
sudo dnf upgrade # Instalar todas las actualizaciones
sudo dnf autoremove # Eliminar dependencias huérfanas
# ── Instalar y eliminar software ──
sudo dnf install httpd # Instalar un paquete
sudo dnf install -y vim git # Sin confirmación
sudo dnf remove httpd # Eliminar un paquete
sudo dnf reinstall vim # Reinstalar un paquete
# ── Buscar e investigar ──
dnf search "web server" # Buscar paquetes
dnf info httpd # Información detallada
dnf list installed # Listar paquetes instalados
dnf provides /usr/bin/curl # ¿Qué paquete proporciona este archivo?
# ── Grupos de paquetes ──
dnf group list # Ver grupos disponibles
sudo dnf group install "Development Tools" # Instalar grupo completo
# ── Historial (exclusivo de DNF) ──
dnf history # Ver historial de transacciones
sudo dnf history undo 15 # Deshacer la transacción nº 15
💡 La ventaja de DNF: historial de transacciones
Una funcionalidad exclusiva de DNF que APT no tiene: el historial de transacciones. Cada operación (instalar, actualizar, eliminar) se registra y puede deshacerse con dnf history undo. Si una actualización rompe algo, puedes revertirla limpiamente.
📱 Snap, Flatpak y AppImage: paquetes universales
Los paquetes tradicionales (.deb, .rpm) son específicos de cada familia de distribuciones. Los paquetes universales resuelven este problema: funcionan en cualquier distribución Linux, independientemente de su sistema de paquetes nativo.
La gestión de software en Linux se realiza desde la línea de comandos con herramientas potentes como APT, DNF o pacman, que permiten instalar, actualizar y eliminar miles de programas con un solo comando. Foto: Pexels.
Como regla general: usa el paquete nativo de tu distribución (.deb o .rpm) cuando esté disponible y actualizado. Si necesitas la última versión de una aplicación de escritorio, Flatpak/Flathub suele ser la mejor opción. Snap es útil para herramientas de servidor y CLI. AppImage es ideal para probar software sin instalar nada.
⚙️ Compilar software desde el código fuente
Cuando un programa no está disponible en los repositorios de tu distribución, o necesitas una versión específica con opciones personalizadas de compilación, puedes instalarlo desde su código fuente. Es el método universal que funciona en cualquier distribución Linux.
Requisitos previos
terminal — instalar herramientas de compilación
# Debian/Ubuntu: instalar compilador y herramientas esenciales
sudo apt install build-essential
# Fedora/RHEL: equivalente
sudo dnf group install "Development Tools"
# Esto instala: gcc, g++, make, libc-dev y otras herramientas básicas
El proceso clásico: configure → make → make install
terminal — compilar desde código fuente
# 1. Descargar y descomprimir
wget https://ejemplo.com/programa-2.0.tar.gz
tar -xzf programa-2.0.tar.gz
cd programa-2.0/
# 2. Leer instrucciones (SIEMPRE)
cat README
cat INSTALL
# 3. Configurar: detecta el sistema y genera el Makefile
./configure --prefix=/usr/local
# Si faltan dependencias, configure lo indica. Ejemplo:
# "configure: error: libssl-dev is required"
# Solución: sudo apt install libssl-dev
# 4. Compilar (make usa todos los cores con -j)
make -j$(nproc)
# 5. Instalar (requiere root)
sudo make install
# 6. Verificar instalación
which programa
programa --version
⚠️ Inconvenientes de compilar
El software compilado desde fuentes no se gestiona con APT ni DNF. No recibirás actualizaciones automáticas y desinstalar requiere sudo make uninstall (si el Makefile lo soporta) o eliminar los archivos manualmente. Para software crítico, siempre es preferible usar el paquete de tu distribución. Reserva la compilación para casos donde realmente lo necesites.
Alternativa moderna: checkinstall
terminal — checkinstall: compilar y empaquetar
# checkinstall crea un .deb/.rpm del software compilado
sudo apt install checkinstall # Debian/Ubuntu
# En lugar de "sudo make install", usar:
sudo checkinstall --default
# Esto crea un paquete .deb e lo instala
# Ventaja: puedes desinstalarlo limpiamente con:
sudo dpkg -r nombre-del-paquete
Usamos cookies propias para mejorar tu experiencia de navegación y analizar
el uso del sitio. No compartimos datos con terceros ni usamos cookies de
publicidad. Puedes aceptar todas, aceptar solo las necesarias o configurar
tus preferencias.
Política de privacidad
Imprescindibles para el funcionamiento del sitio: preferencias de interfaz,
gestión de sesiones y este mismo aviso de cookies. No recogen datos
identificativos.
Nos permiten entender cómo navegas por el contenido para mejorar la
experiencia de aprendizaje. Utilizan identificadores anónimos (UUID) sin
vinculación a datos personales. Retención máxima: 6 meses.
¿Cómo valorarías tu experiencia aprendiendo en esta sección?