Instalación y Configuración de Kopia Backup
Kopia es una herramienta de backup moderna y rápida que combina deduplicación, compresión y cifrado AES-256-GCM con soporte para múltiples backends de almacenamiento y una interfaz gráfica opcional. Su diseño orientado a snapshots con políticas de retención flexibles y soporte para backends S3, Backblaze B2, SFTP y almacenamiento local lo convierten en una alternativa completa a Restic y Borg para entornos Linux de producción. Esta guía cubre la instalación, configuración de repositorios y automatización de backups.
Requisitos Previos
- Linux (Ubuntu/Debian o CentOS/Rocky)
- Acceso root o sudo
- Cuenta en proveedor de almacenamiento (S3, B2, etc.)
- 512 MB RAM mínimo
Instalación de Kopia
# Ubuntu/Debian - Repositorio oficial
curl -s https://kopia.io/signing-key | \
sudo gpg --dearmor -o /etc/apt/keyrings/kopia-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kopia-keyring.gpg] http://packages.kopia.io/apt/ stable main" | \
sudo tee /etc/apt/sources.list.d/kopia.list
sudo apt-get update
sudo apt-get install -y kopia
# CentOS/Rocky Linux
sudo rpm --import https://kopia.io/signing-key
sudo curl -o /etc/yum.repos.d/kopia.repo \
https://packages.kopia.io/rpm/stable/kopia.repo
sudo dnf install -y kopia
# O descarga directa del binario
KOPIA_VERSION="0.16.1"
curl -LO "https://github.com/kopia/kopia/releases/download/v${KOPIA_VERSION}/kopia-${KOPIA_VERSION}-linux-x64.tar.gz"
tar xzf kopia-${KOPIA_VERSION}-linux-x64.tar.gz
sudo install -m 0755 kopia-${KOPIA_VERSION}-linux-x64/kopia /usr/local/bin/
# Verificar la instalación
kopia --version
Configuración del Repositorio
Repositorio en Backblaze B2
# Conectar a un repositorio B2 (crear si no existe)
kopia repository create b2 \
--bucket=mi-bucket-kopia \
--key-id=mi-b2-key-id \
--key=mi-b2-application-key \
--password=mi-clave-cifrado-repositorio
# Conectar a un repositorio B2 existente
kopia repository connect b2 \
--bucket=mi-bucket-kopia \
--key-id=mi-b2-key-id \
--key=mi-b2-application-key \
--password=mi-clave-cifrado-repositorio
# Verificar la conexión
kopia repository status
Repositorio en Amazon S3
# Crear repositorio en S3
kopia repository create s3 \
--bucket=mi-bucket-kopia \
--access-key=AKIAIOSFODNN7EXAMPLE \
--secret-access-key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \
--region=us-east-1 \
--password=mi-clave-cifrado
# S3 compatible (MinIO, Wasabi, etc.)
kopia repository create s3 \
--bucket=mi-bucket \
--endpoint=s3.wasabisys.com \
--access-key=MI_KEY \
--secret-access-key=MI_SECRET \
--password=mi-clave-cifrado
Repositorio SFTP
# Crear repositorio en servidor remoto via SFTP
kopia repository create sftp \
--path=/backups/kopia/mi-servidor \
--host=backup.tudominio.com \
--username=backup-user \
--key-file=/root/.ssh/id_ed25519 \
--password=mi-clave-cifrado
Repositorio local (para pruebas o NAS local)
# Crear repositorio en directorio local o NFS
mkdir -p /mnt/nas/kopia-repo
kopia repository create filesystem \
--path=/mnt/nas/kopia-repo \
--password=mi-clave-cifrado
# Verificar el repositorio
kopia repository info
Guardar credenciales de forma segura
# Kopia puede guardar la contraseña de forma persistente
# para automatización (cifrada en el keychain del sistema)
kopia repository connect b2 \
--bucket=mi-bucket \
--key-id=MI_KEY \
--key=MI_SECRET \
--password=mi-clave \
--persist-credentials
# O usar variables de entorno para scripts
export KOPIA_PASSWORD=mi-clave-cifrado
kopia repository connect b2 --bucket=mi-bucket --key-id=KEY --key=SECRET
Políticas de Snapshots
Las políticas controlan qué se incluye, cuántas versiones se mantienen y cuándo hacer backup automático:
# Crear snapshot manual del directorio /var/www
kopia snapshot create /var/www
# Crear snapshot con etiqueta
kopia snapshot create /var/www --description "Pre-despliegue v2.1.0"
# Listar todos los snapshots
kopia snapshot list
# Listar snapshots de un directorio específico
kopia snapshot list /var/www
# Ver detalles de un snapshot
kopia snapshot show SNAPSHOT_ID
# Verificar la integridad de un snapshot
kopia snapshot verify SNAPSHOT_ID
Configurar política de retención
# Política global (aplica a todos los directorios por defecto)
kopia policy set --global \
--keep-latest 10 \
--keep-hourly 24 \
--keep-daily 30 \
--keep-weekly 26 \
--keep-monthly 12 \
--keep-annual 3
# Política para un directorio específico (sobrescribe la global)
kopia policy set /var/www \
--keep-latest 5 \
--keep-hourly 0 \
--keep-daily 14 \
--keep-weekly 8 \
--keep-monthly 12 \
--keep-annual 2
# Política con exclusiones
kopia policy set /home \
--add-ignore ".cache" \
--add-ignore "node_modules" \
--add-ignore "*.pyc" \
--add-ignore ".git"
# Ver la política activa para un directorio
kopia policy show /var/www
# Ver todas las políticas configuradas
kopia policy list
Restaurar desde snapshot
# Listar contenido de un snapshot
kopia ls SNAPSHOT_ID/var/www
# Restaurar un archivo específico
kopia restore SNAPSHOT_ID/var/www/config.yml /tmp/config-restaurado.yml
# Restaurar un directorio completo
kopia restore SNAPSHOT_ID/var/www /tmp/restauracion-www/
# Restaurar en la ubicación original (sobrescribir)
kopia restore SNAPSHOT_ID/var/www /var/www --overwrite-files
# Montar un snapshot como sistema de archivos (solo lectura)
mkdir -p /mnt/kopia-mount
kopia mount SNAPSHOT_ID /mnt/kopia-mount &
# Acceder a los archivos
ls /mnt/kopia-mount/var/www/
# Desmontar cuando termines
kopia umount /mnt/kopia-mount
Compresión y Rendimiento
# Configurar el algoritmo de compresión
kopia policy set --global \
--compression=zstd-medium
# Opciones de compresión disponibles:
# - none: sin compresión
# - pgzip, zlib-level-1..9: niveles de gzip
# - zstd-fastest, zstd-medium, zstd-best: ZSTD (recomendado)
# - s2-default, s2-better, s2-parallel-4: S2 (muy rápido)
# - lz4: muy rápido, baja compresión
# Para datos de texto/logs: zstd-medium es ideal
# Para datos mixtos: zstd-fastest o s2-default
# Para imágenes/videos: none (ya están comprimidos)
# Configurar tamaño de bloque de compresión
kopia policy set --global --compression=zstd-medium
# Ver estadísticas de compresión del repositorio
kopia repository status --json | jq '.stats.compression'
# Limitar el uso de CPU durante el backup
kopia snapshot create /var/www --parallel=2 # usar 2 hilos máximo
Caché local para mejor rendimiento
# Kopia mantiene una caché local para acelerar operaciones
# Ver la configuración actual de caché
kopia cache info
# Configurar tamaño de la caché
kopia cache set --content-cache-size-mb=2048 # 2 GB de caché de contenido
kopia cache set --metadata-cache-size-mb=512 # 512 MB de caché de metadatos
# Limpiar la caché (útil si hay problemas)
kopia cache clear
# Ver la ubicación de la caché
ls -la ~/.cache/kopia/ 2>/dev/null || ls -la /root/.cache/kopia/
KopiaUI: Interfaz Gráfica
Kopia tiene una interfaz web integrada para gestión visual:
# Iniciar el servidor web de Kopia
# (después de conectar a un repositorio)
kopia server start \
--address=127.0.0.1:51515 \
--server-username=admin \
--server-password=AdminPassword123!
# O con certificado TLS
kopia server start \
--address=0.0.0.0:51515 \
--tls-generate-cert \
--server-username=admin \
--server-password=AdminPassword123!
# Crear servicio systemd para la interfaz web
cat > /etc/systemd/system/kopia-server.service << 'EOF'
[Unit]
Description=Kopia Backup Server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/kopia server start \
--address=127.0.0.1:51515 \
--server-username=admin \
--server-password=AdminPassword123!
Environment=KOPIA_PASSWORD=mi-clave-repositorio
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now kopia-server
# Proxy Nginx para acceso al servidor Kopia
server {
listen 443 ssl;
server_name kopia.tudominio.com;
ssl_certificate /etc/letsencrypt/live/kopia.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kopia.tudominio.com/privkey.pem;
location / {
proxy_pass https://127.0.0.1:51515;
proxy_ssl_verify off;
proxy_set_header Host $host;
}
}
Backups Programados con Systemd
# Crear un servicio de backup
cat > /etc/systemd/system/kopia-backup.service << 'EOF'
[Unit]
Description=Kopia Backup - Snapshot diario
After=network.target
[Service]
Type=oneshot
User=root
# Conectar al repositorio y crear snapshots
ExecStart=/usr/local/bin/kopia snapshot create \
/etc \
/home \
/var/www \
/opt
Environment=KOPIA_PASSWORD=mi-clave-repositorio
# Limpiar snapshots según la política después del backup
ExecStartPost=/usr/local/bin/kopia snapshot expire
# Verificar la integridad del repositorio (ocasionalmente)
StandardOutput=journal
StandardError=journal
EOF
# Crear el timer asociado
cat > /etc/systemd/system/kopia-backup.timer << 'EOF'
[Unit]
Description=Kopia Backup Timer - Diario a las 3 AM
[Timer]
OnCalendar=*-*-* 03:00:00
RandomizedDelaySec=300
Persistent=true
AccuracySec=1min
[Install]
WantedBy=timers.target
EOF
systemctl daemon-reload
systemctl enable --now kopia-backup.timer
# Verificar el timer
systemctl list-timers kopia-backup.timer
Solución de Problemas
Error al conectar al repositorio
# Verificar la contraseña
kopia repository connect b2 \
--bucket=mi-bucket \
--key-id=KEY \
--key=SECRET \
--password=CLAVE
# Si la clave es incorrecta: "invalid repository password"
# Si el bucket no existe: crear el bucket primero en la consola del proveedor
# Ver información de conexión
kopia repository status
Backup muy lento
# Ver el progreso del snapshot
kopia snapshot create /var/www --progress
# Aumentar el paralelismo
kopia snapshot create /var/www --parallel=8
# Verificar si hay throttling del proveedor cloud
# Revisar los límites de la cuenta
Repositorio con errores
# Verificar la integridad completa del repositorio
kopia maintenance run --full
# Verificar snapshots específicos
kopia snapshot verify --all
# Reparar índices inconsistentes
kopia maintenance run --full --force
El snapshot no incluye todos los archivos
# Verificar las exclusiones configuradas en la política
kopia policy show /var/www
# Ver qué archivos excluye una política durante el backup
kopia snapshot estimate /var/www --json | jq '.excluded'
# Eliminar una exclusión específica
kopia policy set /var/www --remove-ignore "*.log"
Conclusión
Kopia combina la velocidad del diseño moderno con una experiencia de usuario superior gracias a su interfaz web integrada y su sistema de políticas declarativas. Su soporte para múltiples backends simultáneos, compresión adaptativa y verificación de integridad lo posiciona como la herramienta de backup más completa para Linux en 2024. La integración nativa con systemd timers y la facilidad de restauración selectiva mediante el montaje de snapshots hacen que gestionar backups de producción sea significativamente más sencillo que con herramientas más antiguas.


