Respalda tu VPS Linux con Plakar

11 min de lectura·Matthieu·debianmysqldeduplicationubuntuplakarencryptionbackuppostgresql|

Instala plakar en Debian 12 o Ubuntu 24.04, crea un almacén cifrado con deduplicación, respalda rutas del sistema de archivos y bases de datos mediante stdin, automatiza las copias de seguridad y restaura archivos o dumps completos de bases de datos.

¿Qué es plakar y por qué usarlo para respaldar un VPS?

Plakar es una herramienta de backup open source escrita en Go. Se distribuye como un binario único con cifrado integrado, deduplicación, interfaz web y programador nativo. El cifrado está activado por defecto cuando creas un almacén. Plakar respalda rutas del sistema de archivos, dumps de bases de datos vía stdin y buckets S3. El proyecto se unió a la Linux Foundation y la CNCF en enero de 2026.

Si ya usas restic o borgbackup, estas son las diferencias con plakar. Restic necesita una herramienta externa como rclone para la sincronización remota y cron para la programación. Borgbackup requiere un servidor borg en el lado remoto y no tiene interfaz web integrada. Plakar maneja todo esto de forma nativa: plakar sync replica entre almacenes, plakar scheduler ejecuta backups a intervalos definidos, y plakar ui lanza una interfaz en el navegador para explorar snapshots.

Tanto restic como plakar soportan backups vía stdin para pipear dumps de bases de datos. Borgbackup no. Los tres deduplican. Plakar activa el cifrado por defecto al crear un repositorio, mientras que restic y borgbackup permiten crear repos sin cifrar.

Esta guía cubre backups locales en un solo VPS. Para replicación offsite a un servidor remoto, consulta Copia de seguridad externa y replicacion con Plakar.

¿Qué necesitas antes de empezar?

Necesitas un VPS con Debian 12 o Ubuntu 24.04 y acceso root o sudo. Un VPS de Virtua Cloud funciona bien para esto. También necesitas acceso SSH configurado con autenticación por clave y al menos 10 GB de espacio libre en disco para el almacén de backups.

Si planeas respaldar bases de datos, instala MySQL o PostgreSQL primero. Esas instalaciones no se cubren aquí.

Todos los comandos de esta guía se ejecutan como root. Si usas un usuario con sudo, antepón sudo a cada comando.

¿Cómo instalar plakar en Debian 12 o Ubuntu 24.04?

Añade el repositorio apt oficial de plakar, importa la clave de firma GPG e instala el paquete. Los mismos pasos funcionan en Debian 12 y Ubuntu 24.04. El paquete apt gestiona las actualizaciones automáticamente a través de tu ciclo normal de actualización del sistema.

Instala los prerrequisitos:

apt update
apt install -y curl gnupg2

Importa la clave GPG y añade el repositorio:

curl -fsSL https://plakar.io/dist/keys/community-v1.1.0.gpg | gpg --dearmor -o /usr/share/keyrings/plakar.gpg
echo "deb [signed-by=/usr/share/keyrings/plakar.gpg] https://plakar.io/dist/repos/deb/ stable main" | tee /etc/apt/sources.list.d/plakar.list

La clave GPG está vinculada al repositorio mediante signed-by. Apt solo confía en paquetes firmados con esa clave específica. Esto evita que un repositorio de terceros comprometido inyecte paquetes en tu sistema.

Instala plakar:

apt update
apt install -y plakar

Confirma la instalación:

plakar version
plakar/v1.0.6

¿Cómo crear un almacén Kloset cifrado?

Un almacén Kloset es el backend de almacenamiento de plakar. Contiene todos los snapshots en forma deduplicada y cifrada. Cada bloque de datos se cifra antes de escribirse en disco. El motor Kloset deduplica antes del cifrado: los bloques idénticos entre distintos snapshots se almacenan una sola vez, pero permanecen completamente cifrados en reposo.

Crea un almacén en /var/backups/plakar:

mkdir -p /var/backups/plakar
plakar at /var/backups/plakar create

Plakar solicita una frase de paso:

repository passphrase:

Genera una frase de paso segura:

openssl rand -base64 32

Guarda esta frase de paso en un gestor de contraseñas o en una ubicación segura separada. Si la pierdes, pierdes acceso a todos los snapshots del almacén. No hay mecanismo de recuperación.

Restringe los permisos del directorio para que solo root pueda acceder:

chmod 700 /var/backups/plakar
ls -la /var/backups/
drwx------  5 root root 4096 Mar 20 10:00 plakar

La ubicación por defecto del almacén es ~/.plakar si omites at <path>. En un servidor, usa una ruta dedicada como /var/backups/plakar para que no dependa del directorio home de un usuario.

¿Cómo respaldar rutas del sistema de archivos con plakar?

Respalda los directorios importantes de un VPS: /etc para la configuración del sistema, /home para datos de usuario y /var/www para contenido web. Cada comando plakar backup toma una sola ruta. Ejecuta un backup por directorio, o agrúpalos bajo un directorio padre común. Los archivos sin cambios entre snapshots se almacenan una sola vez gracias a la deduplicación.

plakar at /var/backups/plakar backup /etc

Cada backup crea un snapshot identificado por un ID hexadecimal corto. La salida lista cada archivo procesado y un resumen:

a5bcf13b: OK ✓ /etc/hostname
a5bcf13b: OK ✓ /etc/ssh/sshd_config
...
info: backup: created unsigned snapshot a5bcf13b of size 1.4 MiB in 210ms (wrote 1.7 MiB)

El segundo backup de la misma ruta se ejecuta más rápido porque solo se almacenan los bloques modificados. Respalda rutas adicionales de la misma forma:

plakar at /var/backups/plakar backup /home
plakar at /var/backups/plakar backup /var/www

Etiquetar snapshots

Usa el flag -tag para etiquetar snapshots. Esto ayuda a filtrar cuando tienes muchos:

plakar at /var/backups/plakar backup -tag "daily,filesystem" /etc

Excluir archivos

Los archivos de log, cachés y artefactos de compilación desperdician espacio en los backups. Usa -ignore para patrones en línea:

plakar at /var/backups/plakar backup -ignore "*.log" -ignore "cache/" /etc

Para una lista más larga, carga los patrones desde un archivo. La sintaxis sigue las reglas de gitignore:

cat > /etc/plakar-excludes <<EOF
*.log
*.tmp
*.swp
cache/
.cache/
node_modules/
__pycache__/
.git/
EOF
chmod 600 /etc/plakar-excludes
plakar at /var/backups/plakar backup -ignore-file /etc/plakar-excludes /etc

Ejecución en seco

Previsualiza lo que plakar respaldaría sin escribir nada en el almacén:

plakar at /var/backups/plakar backup -scan /etc

Esto lista cada archivo que cumple con los criterios del backup. Útil cuando ajustas patrones de exclusión.

Verificación en el backup

Añade -check para ejecutar una verificación de integridad inmediatamente después de completar el backup:

plakar at /var/backups/plakar backup -check /etc

Cuesta unos segundos extra pero detecta la corrupción temprano.

¿Cómo respaldar una base de datos MySQL con plakar?

Pipea la salida de mysqldump directamente a plakar usando la fuente stdin:. Ningún archivo de dump intermedio toca el disco. El flujo SQL va directo de mysqldump al pipeline de cifrado y deduplicación de plakar.

Para una sola base de datos:

mysqldump --single-transaction \
  --routines \
  --triggers \
  --events \
  myapp_db | plakar at /var/backups/plakar backup stdin:myapp_db.sql

Qué hace cada flag:

  • --single-transaction: toma un snapshot consistente de las tablas InnoDB sin bloquearlas. Otras consultas siguen ejecutándose.
  • --routines: incluye procedimientos almacenados y funciones.
  • --triggers: incluye triggers de tabla.
  • --events: incluye eventos programados.

Para todas las bases de datos del servidor:

mysqldump --all-databases \
  --single-transaction \
  --routines \
  --triggers \
  --events \
  --set-gtid-purged=OFF | plakar at /var/backups/plakar backup stdin:all_databases.sql

--set-gtid-purged=OFF omite los metadatos GTID. Esto hace el dump portable entre diferentes instancias de MySQL sin conflictos GTID durante la importación.

El snapshot almacena el dump SQL como un archivo único nombrado según la etiqueta stdin:. Referencia este nombre al restaurar.

¿Cómo respaldar una base de datos PostgreSQL con plakar?

El enfoque es el mismo: pipea pg_dump a plakar vía stdin:. La autenticación de PostgreSQL típicamente usa autenticación peer para el usuario del sistema postgres, así que ejecuta el comando de dump con esa cuenta.

Para una sola base de datos:

su - postgres -c "pg_dump --format=plain myapp_db" | plakar at /var/backups/plakar backup stdin:myapp_db.sql

Para todas las bases de datos y roles, usa pg_dumpall:

su - postgres -c "pg_dumpall" | plakar at /var/backups/plakar backup stdin:all_pg_databases.sql

pg_dumpall incluye objetos globales como roles y tablespaces que pg_dump omite. Úsalo cuando necesites un backup completo del cluster. pg_dump --format=plain produce un archivo SQL plano que se pipea directamente a psql durante la restauración.

¿Cómo listar y explorar snapshots de plakar?

Lista todos los snapshots del almacén con plakar ls. Cada línea muestra la marca de tiempo, el ID del snapshot, el tamaño comprimido, la duración del backup y la ruta de origen.

plakar at /var/backups/plakar ls
2026-03-20T10:05:12Z   a5bcf13b   1.4 MiB        0s /etc
2026-03-20T10:06:01Z   5fc17459       0 B        0s /home
2026-03-20T10:06:15Z   7ed22fb8      24 B        0s /var/www
2026-03-20T10:10:45Z   ec916c75   2.0 KiB        0s /
2026-03-20T10:12:03Z   08ee9b7e   1.2 MiB        0s /

Los backups stdin aparecen con / como ruta de origen en la lista. El ID del snapshot sirve para distinguirlos.

Filtrar por tag:

plakar at /var/backups/plakar ls -tag daily

Explorar el contenido de un snapshot específico:

plakar at /var/backups/plakar ls a5bcf13b

Acotar a un subdirectorio:

plakar at /var/backups/plakar ls a5bcf13b:/etc/ssh/

Interfaz web

Para una interfaz visual, lanza la interfaz web integrada. En un servidor sin pantalla, añade -no-spawn para evitar que intente abrir un navegador:

plakar at /var/backups/plakar ui -no-spawn -addr localhost:8080

La interfaz permite explorar snapshots, ver contenidos de archivos y descargar archivos individuales. Plakar genera un token de autenticación automáticamente e imprime la URL con el token adjunto.

Para desactivar la autenticación por token (no recomendado en producción):

plakar at /var/backups/plakar ui -no-spawn -no-auth -addr localhost:8080

Detenla con Ctrl+C cuando termines. Para acceso permanente, pon un reverse proxy con TLS delante y mantén la autenticación por token activada.

¿Cómo verificar la integridad de los backups con plakar?

Ejecuta plakar check contra un ID de snapshot para verificar cada bloque. Plakar relee cada bloque del almacén, lo descifra y recalcula las sumas de verificación. Si algún bloque ha sido corrompido o alterado, la verificación falla.

plakar at /var/backups/plakar check a5bcf13b
info: a5bcf13b: ✓ /etc/hostname
info: a5bcf13b: ✓ /etc/ssh/sshd_config
info: a5bcf13b: ✓ /etc/apt/sources.list.d/plakar.list
...
info: check: verification of a5bcf13b:/etc completed successfully

Cada archivo recibe una marca si su suma de verificación coincide. Los archivos corrompidos muestran un marcador de error.

Para verificar todos los snapshots del almacén de una vez:

plakar at /var/backups/plakar check

Para una verificación estructural más rápida que omite la verificación de digests en bloques individuales:

plakar at /var/backups/plakar check -fast a5bcf13b

Ejecuta verificaciones de integridad regularmente. Una vez por semana es una cadencia razonable para la mayoría de cargas de trabajo en VPS. Un backup que nunca verificas es un backup en el que no puedes confiar.

¿Cómo restaurar archivos desde un backup de plakar?

Restaura un snapshot completo a un directorio destino con plakar restore. Plakar recrea el árbol de directorios completo bajo la ruta destino. Los permisos y marcas de tiempo originales se preservan.

mkdir -p /tmp/restore
plakar at /var/backups/plakar restore -to /tmp/restore a5bcf13b
info: restore: restoration of a5bcf13b:/etc at /tmp/restore completed successfully

Para restaurar un solo archivo, usa plakar cat y redirige la salida:

plakar at /var/backups/plakar cat a5bcf13b:/etc/hostname > /tmp/hostname.restored

Para restaurar solo un directorio de un snapshot:

plakar at /var/backups/plakar restore -to /tmp/restore 7ed22fb8:/var/www

Esto extrae solo /var/www y su contenido. Todo lo demás en el snapshot queda intacto.

Siempre restaura primero en una ubicación temporal. Compara los archivos restaurados con el estado actual del servidor antes de sobrescribir algo en su lugar. Una restauración descuidada a / puede sobrescribir archivos de configuración que han cambiado desde que se tomó el snapshot.

¿Cómo restaurar un dump de base de datos desde plakar?

Usa plakar cat para transmitir el dump SQL desde un snapshot directamente al cliente de base de datos. Sin archivo intermedio en disco. Usa el ID del snapshot del backup stdin que quieres restaurar.

MySQL

Restaurar una sola base de datos:

plakar at /var/backups/plakar cat ec916c75:myapp_db.sql | mysql myapp_db

Restaurar todas las bases de datos desde un dump completo:

plakar at /var/backups/plakar cat 08ee9b7e:all_databases.sql | mysql

PostgreSQL

Restaurar una sola base de datos:

plakar at /var/backups/plakar cat f86ce26a:myapp_db.sql | su - postgres -c "psql myapp_db"

Restaurar el cluster completo:

plakar at /var/backups/plakar cat c09e650e:all_pg_databases.sql | su - postgres -c "psql"

Prueba las restauraciones en una base de datos que no sea de producción o en un servidor de pruebas dedicado. Una estrategia de backup sin restauraciones probadas no es una estrategia de backup. Programa una prueba de restauración al menos una vez por trimestre.

¿Cómo automatizar backups con el scheduler de plakar?

Plakar tiene un scheduler integrado que ejecuta tareas de backup a intervalos definidos. No necesitas cron. Defines las tareas en un archivo YAML y plakar se encarga del timing, la ejecución y las verificaciones de integridad opcionales después del backup.

Primero, registra el almacén con credenciales guardadas para que el scheduler pueda acceder sin solicitar la frase de paso de forma interactiva. Crea un archivo de frase de paso con permisos restringidos:

mkdir -p /etc/plakar
openssl rand -base64 32 > /etc/plakar/passphrase
chmod 600 /etc/plakar/passphrase
chown root:root /etc/plakar/passphrase
ls -la /etc/plakar/passphrase
-rw-------  1 root root 45 Mar 20 10:20 /etc/plakar/passphrase

Usa esta frase de paso al crear el almacén (o actualízalo si ya creaste uno con una frase de paso diferente). Registra el almacén por nombre:

plakar store add mybackups \
  location=/var/backups/plakar \
  passphrase_cmd="cat /etc/plakar/passphrase"

Ahora crea la configuración del scheduler. Cada tarea respalda una ruta:

mkdir -p /etc/plakar
cat > /etc/plakar/scheduler.yaml <<'EOF'
agent:
  tasks:
    - name: backup etc
      repository: "@mybackups"
      backup:
        path: /etc
        interval: 24h
        check: true
    - name: backup home
      repository: "@mybackups"
      backup:
        path: /home
        interval: 24h
    - name: backup www
      repository: "@mybackups"
      backup:
        path: /var/www
        interval: 24h
EOF
chmod 600 /etc/plakar/scheduler.yaml

Pruébalo manualmente primero:

plakar scheduler start -tasks /etc/plakar/scheduler.yaml

El scheduler se ejecuta en primer plano y registra la ejecución de tareas. Detenlo con Ctrl+C. Para ejecutarlo como daemon en segundo plano, usa el servicio systemd descrito a continuación.

El scheduler maneja backups del sistema de archivos de forma nativa. Los dumps de bases de datos que necesitan piping a través de mysqldump o pg_dump requieren un script wrapper. Crea uno:

cat > /etc/plakar/backup-databases.sh <<'EOF'
#!/bin/bash
set -euo pipefail

# MySQL
if command -v mysqldump &>/dev/null; then
  mysqldump --all-databases \
    --single-transaction \
    --routines \
    --triggers \
    --events \
    --set-gtid-purged=OFF | plakar at @mybackups backup -tag "daily,mysql" stdin:all_databases.sql
fi

# PostgreSQL
if command -v pg_dump &>/dev/null; then
  su - postgres -c "pg_dumpall" | plakar at @mybackups backup -tag "daily,postgresql" stdin:all_pg_databases.sql
fi
EOF
chmod 700 /etc/plakar/backup-databases.sh

¿Cómo ejecutar el scheduler de plakar como servicio systemd?

Envuelve el scheduler en una unidad systemd para que arranque con el sistema, se reinicie en caso de fallo y se integre con journalctl para los logs.

cat > /etc/systemd/system/plakar-scheduler.service <<EOF
[Unit]
Description=Plakar Backup Scheduler
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/plakar scheduler start -tasks /etc/plakar/scheduler.yaml
ExecStop=/usr/bin/plakar scheduler stop
Restart=on-failure
RestartSec=30
User=root
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

Si también ejecutas el script de backup de bases de datos, crea un timer separado:

cat > /etc/systemd/system/plakar-db-backup.service <<EOF
[Unit]
Description=Plakar Database Backup
After=network.target mysql.service postgresql.service

[Service]
Type=oneshot
ExecStart=/etc/plakar/backup-databases.sh
User=root
EOF
cat > /etc/systemd/system/plakar-db-backup.timer <<EOF
[Unit]
Description=Run Plakar Database Backup Daily

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
EOF

Activa y arranca todo. enable --now hace que el servicio sobreviva a los reinicios y lo arranca inmediatamente:

systemctl daemon-reload
systemctl enable --now plakar-scheduler.service
systemctl status plakar-scheduler.service
 plakar-scheduler.service - Plakar Backup Scheduler
     Loaded: loaded (/etc/systemd/system/plakar-scheduler.service; enabled; preset: enabled)
     Active: active (running)

Para el timer de backup de bases de datos:

systemctl enable --now plakar-db-backup.timer
systemctl list-timers plakar-db-backup.timer
NEXT                         LEFT          LAST  PASSED  UNIT                    ACTIVATES
Fri 2026-03-21 02:00:00 UTC  15h left      n/a   n/a     plakar-db-backup.timer  plakar-db-backup.service

Monitoriza los logs del scheduler:

journalctl -u plakar-scheduler.service -f

¿Cómo eliminar snapshots antiguos?

Elimina un snapshot por su ID. Por defecto, plakar rm realiza una ejecución en seco y muestra lo que se eliminaría. Añade -apply para eliminar el snapshot realmente:

plakar at /var/backups/plakar rm a5bcf13b
rm: would remove these 1 snapshot(s), run with -apply to proceed
2026-03-20T10:05:12Z   a5bcf13b   1.4 MiB        0s /etc
plakar at /var/backups/plakar rm -apply a5bcf13b
info: rm: removal of a5bcf13b completed successfully

La deduplicación de plakar significa que eliminar un snapshot solo libera espacio para bloques de datos no referenciados por ningún snapshot restante. Si dos snapshots comparten el 90 % de sus datos, eliminar uno solo libera el 10 % único.

¿Algo salió mal?

"repository passphrase" en cada comando. Plakar requiere la frase de paso cada vez que accedes al almacén interactivamente. Registra el almacén con plakar store add y un passphrase_cmd como se muestra en la sección del scheduler. Luego referencia el almacén por nombre:

plakar at @mybackups backup /etc

También puedes usar el flag -keyfile para apuntar a un archivo de frase de paso en comandos puntuales:

plakar -keyfile /etc/plakar/passphrase at /var/backups/plakar backup /etc

Nunca exportes PLAKAR_PASSPHRASE en tu perfil de shell o .bashrc. El valor termina en el historial del shell y las listas de procesos. Usa el patrón passphrase_cmd o el flag -keyfile.

"permission denied" al respaldar. Plakar necesita acceso de lectura a los archivos de origen. Ejecutar como root evita este problema. Si usas un usuario de backup dedicado, otorga permisos de lectura en los directorios objetivo con ACLs o membresía de grupo.

Los snapshots son más grandes de lo esperado. Probablemente estás respaldando archivos de log, cachés o artefactos de compilación. Usa -ignore o -ignore-file para excluirlos. Ejecuta un -scan primero para ver qué se incluye.

"no space left on device" durante el backup. El almacén de backup y los archivos temporales necesitan espacio en disco. Verifica con df -h. El almacén crece con el tiempo a medida que añades snapshots. Monitorízalo.

Leer los logs de plakar. Plakar escribe la salida en stdout. Redirige stdout y stderr a un archivo:

plakar at /var/backups/plakar backup /etc > /var/log/plakar-backup.log 2>&1

Para salida detallada, usa el flag global -trace (va antes de at):

plakar -trace all at /var/backups/plakar backup /etc > /var/log/plakar-debug.log 2>&1

Próximos pasos

Tus backups ahora se ejecutan según un horario, pero residen en el mismo disco que los datos que protegen. Un fallo de disco, ransomware o un servidor comprometido se lleva ambos de una vez.

Lleva tus backups fuera del servidor. Copia de seguridad externa y replicacion con Plakar cubre la replicación de snapshots a un servidor remoto o almacenamiento compatible con S3 con plakar sync.


Copyright 2026 Virtua.Cloud. Todos los derechos reservados. Este contenido es una obra original del equipo de Virtua.Cloud. La reproducción, republicación o redistribución sin permiso escrito está prohibida.

¿Listo para probarlo?

Despliega tu propio servidor en segundos. Linux, Windows o FreeBSD.

Ver planes VPS