Esegui il backup del tuo VPS Linux con Plakar

11 min di lettura·Matthieu·debianmysqldeduplicationubuntuplakarencryptionbackuppostgresql|

Installa plakar su Debian 12 o Ubuntu 24.04, crea un archivio cifrato con deduplicazione, esegui il backup di percorsi del filesystem e database tramite pipe stdin, automatizza i backup e ripristina file o dump completi di database.

Cos'è plakar e perché usarlo per i backup del VPS?

Plakar è uno strumento di backup open source scritto in Go. Viene distribuito come singolo binario con crittografia integrata, deduplicazione, interfaccia web e scheduler nativo. La crittografia è attiva per impostazione predefinita quando crei un repository. Plakar esegue il backup di percorsi del filesystem, dump di database tramite pipe stdin e bucket S3. Il progetto è entrato nella Linux Foundation e nella CNCF a gennaio 2026.

Se usi già restic o borgbackup, ecco le differenze. Restic richiede uno strumento esterno come rclone per la sincronizzazione remota e cron per la pianificazione. Borgbackup ha bisogno di un server borg sul lato remoto e non ha un'interfaccia web integrata. Plakar gestisce tutto nativamente: plakar sync replica tra archivi, plakar scheduler esegue backup a intervalli definiti, e plakar ui avvia un'interfaccia browser per sfogliare gli snapshot.

Sia restic che plakar supportano backup via stdin per collegare dump di database. Borgbackup no. Tutti e tre deduplicano. Plakar attiva la crittografia per impostazione predefinita quando crei un repository, mentre restic e borgbackup permettono di creare repository non cifrati.

Questa guida copre i backup locali su un singolo VPS. Per la replica offsite su un server remoto, consulta Backup offsite e replica con Plakar.

Cosa ti serve prima di iniziare?

Ti serve un VPS con Debian 12 o Ubuntu 24.04 con accesso root o sudo. Un VPS Virtua Cloud è adatto a questo scopo. Hai anche bisogno di accesso SSH configurato con autenticazione a chiave e almeno 10 GB di spazio libero su disco per l'archivio di backup.

Se prevedi di fare il backup dei database, installa prima MySQL o PostgreSQL. Queste installazioni non sono trattate qui.

Tutti i comandi in questa guida vengono eseguiti come root. Se usi un utente sudo, anteponi sudo a ogni comando.

Come si installa plakar su Debian 12 o Ubuntu 24.04?

Aggiungi il repository apt ufficiale di plakar, importa la chiave di firma GPG e installa il pacchetto. Gli stessi passaggi funzionano su Debian 12 e Ubuntu 24.04. Il pacchetto apt gestisce gli aggiornamenti automaticamente attraverso il normale ciclo di aggiornamento del sistema.

Installa i prerequisiti:

apt update
apt install -y curl gnupg2

Importa la chiave GPG e aggiungi il repository:

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 chiave GPG è vincolata al repository tramite signed-by. Apt si fida solo dei pacchetti firmati con quella chiave specifica. Questo impedisce a un repository di terze parti compromesso di iniettare pacchetti nel tuo sistema.

Installa plakar:

apt update
apt install -y plakar

Conferma l'installazione:

plakar version
plakar/v1.0.6

Come si crea un archivio Kloset cifrato?

Un archivio Kloset è il backend di archiviazione di plakar. Contiene tutti gli snapshot in forma deduplicata e cifrata. Ogni blocco di dati viene cifrato prima di essere scritto su disco. Il motore Kloset deduplica prima della crittografia, quindi blocchi identici tra diversi snapshot vengono memorizzati una sola volta pur rimanendo completamente cifrati a riposo.

Crea un archivio in /var/backups/plakar:

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

Plakar chiede una passphrase:

repository passphrase:

Genera una passphrase robusta:

openssl rand -base64 32

Salva questa passphrase in un gestore di password o in una posizione sicura separata. Se la perdi, perdi l'accesso a ogni snapshot nell'archivio. Non esiste un meccanismo di recupero.

Imposta i permessi sulla directory dell'archivio in modo che solo root possa accedervi:

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

La posizione predefinita dell'archivio è ~/.plakar se ometti at <path>. Su un server, usa un percorso dedicato come /var/backups/plakar in modo che non dipenda dalla directory home di un utente.

Come si esegue il backup dei percorsi del filesystem con plakar?

Esegui il backup delle directory che contano su un VPS: /etc per la configurazione di sistema, /home per i dati utente e /var/www per i contenuti web. Ogni comando plakar backup accetta un singolo percorso. Esegui un backup per directory, oppure raggruppali sotto una directory padre comune. I file invariati tra gli snapshot vengono memorizzati una sola volta grazie alla deduplicazione.

plakar at /var/backups/plakar backup /etc

Ogni backup crea uno snapshot identificato da un breve ID esadecimale. L'output elenca ogni file elaborato e un riepilogo:

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)

Il secondo backup dello stesso percorso è più veloce perché vengono memorizzati solo i blocchi modificati. Esegui il backup di percorsi aggiuntivi allo stesso modo:

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

Etichettare gli snapshot

Usa il flag -tag per etichettare gli snapshot. Utile quando hai molti snapshot e devi filtrarli in seguito:

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

Escludere file

File di log, cache e artefatti di compilazione sprecano spazio nei backup. Usa -ignore per pattern inline:

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

Per un elenco più lungo, carica i pattern da un file. La sintassi segue le regole di 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

Modalità scansione

Anteprima di ciò che plakar copierebbe senza scrivere nulla nell'archivio:

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

Elenca ogni file che corrisponde ai criteri di backup. Utile quando si perfezionano i pattern di esclusione.

Verifica durante il backup

Aggiungi -check per eseguire una verifica di integrità subito dopo il completamento del backup:

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

Costa qualche secondo in più ma rileva la corruzione tempestivamente.

Come si esegue il backup di un database MySQL con plakar?

Collega l'output di mysqldump direttamente a plakar usando la sorgente stdin:. Nessun file di dump intermedio tocca il disco. Il flusso SQL va direttamente da mysqldump nella pipeline di crittografia e deduplicazione di plakar.

Per un singolo database:

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

Cosa fa ogni flag:

  • --single-transaction: acquisisce uno snapshot consistente delle tabelle InnoDB senza bloccarle. Le altre query continuano a funzionare.
  • --routines: include stored procedure e funzioni.
  • --triggers: include i trigger delle tabelle.
  • --events: include gli eventi programmati.

Per tutti i database sul server:

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 omette i metadati GTID. Rende il dump portabile tra diverse istanze MySQL senza conflitti GTID durante l'importazione.

Lo snapshot memorizza il dump SQL come singolo file denominato secondo l'etichetta stdin:. Fai riferimento a questo nome durante il ripristino.

Come si esegue il backup di un database PostgreSQL con plakar?

L'approccio è lo stesso: collega pg_dump a plakar tramite stdin:. L'autenticazione PostgreSQL usa tipicamente l'autenticazione peer per l'utente di sistema postgres, quindi esegui il comando di dump con quell'account.

Per un singolo database:

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

Per tutti i database e i ruoli, usa pg_dumpall:

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

pg_dumpall include oggetti globali come ruoli e tablespace che pg_dump salta. Usalo quando hai bisogno di un backup completo del cluster. pg_dump --format=plain produce un file SQL piano che si collega direttamente a psql durante il ripristino.

Come si elencano e sfogliano gli snapshot di plakar?

Elenca tutti gli snapshot nell'archivio con plakar ls. Ogni riga mostra il timestamp, l'ID dello snapshot, la dimensione compressa, la durata del backup e il percorso sorgente.

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 /

I backup stdin appaiono con / come percorso sorgente nell'elenco. L'ID dello snapshot serve a distinguerli.

Filtrare per tag:

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

Sfogliare il contenuto di uno specifico snapshot del filesystem:

plakar at /var/backups/plakar ls a5bcf13b

Restringere a una sottodirectory:

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

Interfaccia web

Per un'interfaccia visuale, avvia l'interfaccia web integrata. Su un server senza desktop, aggiungi -no-spawn per impedire l'apertura di un browser:

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

L'interfaccia permette di sfogliare gli snapshot, visualizzare il contenuto dei file e scaricare file singoli. Plakar genera automaticamente un token di autenticazione e stampa l'URL con il token allegato.

Per disabilitare l'autenticazione con token (sconsigliato in produzione):

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

Fermalo con Ctrl+C quando hai finito. Per un accesso persistente, metti un reverse proxy con TLS davanti e mantieni l'autenticazione con token attiva.

Come si verifica l'integrità dei backup con plakar?

Esegui plakar check su un ID di snapshot per verificare ogni blocco. Plakar rilegge ogni blocco dall'archivio, lo decifra e ricalcola i checksum. Se un blocco è stato corrotto o manomesso, la verifica fallisce.

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

Ogni file riceve un segno di spunta se il suo checksum corrisponde. I file corrotti mostrano un indicatore di errore.

Per verificare ogni snapshot nell'archivio in una volta:

plakar at /var/backups/plakar check

Per una verifica strutturale più rapida che salta la verifica dei digest sui singoli blocchi:

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

Esegui verifiche di integrità regolarmente. Una volta a settimana è una cadenza ragionevole per la maggior parte dei carichi di lavoro VPS. Un backup che non verifichi mai è un backup di cui non puoi fidarti.

Come si ripristinano i file da un backup plakar?

Ripristina un intero snapshot in una directory di destinazione con plakar restore. Plakar ricrea l'albero completo delle directory sotto il percorso di destinazione. Permessi e timestamp originali vengono preservati.

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

Per ripristinare un singolo file, usa plakar cat e reindirizza l'output:

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

Per ripristinare solo una directory da uno snapshot:

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

Questo estrae solo /var/www e il suo contenuto. Tutto il resto nello snapshot rimane intatto.

Ripristina sempre prima in una posizione temporanea. Confronta i file ripristinati con lo stato attuale del server prima di sovrascrivere qualsiasi cosa direttamente. Un ripristino incauto su / può sovrascrivere file di configurazione che sono cambiati dalla creazione dello snapshot.

Come si ripristina un dump di database da plakar?

Usa plakar cat per trasmettere il dump SQL da uno snapshot direttamente nel client del database. Nessun file intermedio su disco. Usa l'ID dello snapshot del backup stdin che vuoi ripristinare.

MySQL

Ripristinare un singolo database:

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

Ripristinare tutti i database da un dump completo:

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

PostgreSQL

Ripristinare un singolo database:

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

Ripristinare l'intero cluster:

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

Testa i ripristini su un database non di produzione o su un server di test nuovo. Una strategia di backup senza ripristini testati non è una strategia di backup. Pianifica un test di ripristino almeno una volta a trimestre.

Come si automatizzano i backup con lo scheduler di plakar?

Plakar ha uno scheduler integrato che esegue task di backup a intervalli definiti. Non serve cron. Definisci i task in un file YAML e plakar gestisce tempistica, esecuzione e verifiche opzionali di integrità post-backup.

Prima registra l'archivio con le credenziali salvate in modo che lo scheduler possa accedervi senza richieste interattive di passphrase. Crea un file passphrase con permessi ristretti:

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 questa passphrase quando crei l'archivio (o aggiorna l'archivio se ne hai già creato uno con una passphrase diversa). Registra l'archivio per nome:

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

Ora crea la configurazione dello scheduler. Ogni task esegue il backup di un percorso:

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

Testalo manualmente prima:

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

Lo scheduler gira in primo piano e registra l'esecuzione dei task. Fermalo con Ctrl+C. Per eseguirlo come daemon in background, usa il servizio systemd descritto sotto.

Lo scheduler gestisce nativamente i backup del filesystem. I dump di database che richiedono pipe attraverso mysqldump o pg_dump necessitano di uno script wrapper. Creane 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

Come si esegue lo scheduler di plakar come servizio systemd?

Inserisci lo scheduler in un'unità systemd in modo che si avvii al boot, si riavvii in caso di errore e si integri con journalctl per il logging.

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

Se esegui anche lo script di backup dei database, crea un timer separato:

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

Attiva e avvia tutto. enable --now fa sopravvivere il servizio ai riavvii e lo avvia immediatamente:

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)

Per il timer di backup dei database:

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

Monitorare i log dello scheduler:

journalctl -u plakar-scheduler.service -f

Come si eliminano i vecchi snapshot?

Rimuovi uno snapshot tramite il suo ID. Per impostazione predefinita, plakar rm esegue un dry run e mostra cosa verrebbe eliminato. Aggiungi -apply per rimuovere effettivamente lo snapshot:

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 deduplicazione di plakar significa che rimuovere uno snapshot libera spazio solo per i blocchi di dati non referenziati da nessun altro snapshot rimanente. Se due snapshot condividono il 90% dei dati, rimuoverne uno libera solo il 10% unico.

Qualcosa è andato storto?

"repository passphrase" a ogni comando. Plakar richiede la passphrase ogni volta che accedi all'archivio in modo interattivo. Registra l'archivio con plakar store add e un passphrase_cmd come mostrato nella sezione scheduler. Poi fai riferimento all'archivio per nome:

plakar at @mybackups backup /etc

Puoi anche usare il flag -keyfile per puntare a un file passphrase per comandi singoli:

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

Non esportare mai PLAKAR_PASSPHRASE nel tuo profilo shell o .bashrc. Finisce nella cronologia della shell e nelle liste dei processi. Usa il pattern passphrase_cmd o il flag -keyfile.

"permission denied" durante il backup. Plakar ha bisogno dell'accesso in lettura ai file sorgente. Eseguire come root evita il problema. Se usi un utente dedicato per i backup, concedi i permessi di lettura sulle directory target con ACL o appartenenza ai gruppi.

Gli snapshot sono più grandi del previsto. Probabilmente stai facendo il backup di file di log, cache o artefatti di compilazione. Usa -ignore o -ignore-file per escluderli. Esegui prima un -scan per vedere cosa viene incluso.

"no space left on device" durante il backup. L'archivio di backup e i file pack temporanei necessitano di spazio su disco. Controlla con df -h. L'archivio cresce nel tempo man mano che aggiungi snapshot. Monitoralo.

Leggere i log di plakar. Plakar scrive l'output su stdout. Reindirizza sia stdout che stderr in un file:

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

Per un output dettagliato, usa il flag globale -trace (va prima di at):

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

Prossimi passi

I tuoi backup ora girano secondo una pianificazione, ma risiedono sullo stesso disco dei dati che proteggono. Un guasto al disco, un ransomware o un server compromesso li distrugge entrambi contemporaneamente.

Porta i tuoi backup offsite. Backup offsite e replica con Plakar copre la replica degli snapshot su un server remoto o storage compatibile S3 con plakar sync.


Copyright 2026 Virtua.Cloud. Tutti i diritti riservati. Questo contenuto è un'opera originale del team Virtua.Cloud. La riproduzione, ripubblicazione o redistribuzione senza autorizzazione scritta è vietata.

Pronto a provare?

Distribuisci il tuo server in pochi secondi. Linux, Windows o FreeBSD.

Vedi piani VPS