Sauvegarder votre VPS Linux avec Plakar

12 min de lecture·Matthieu·debianmysqldeduplicationubuntuplakarencryptionbackuppostgresql|

Installez plakar sur Debian 12 ou Ubuntu 24.04, créez un dépôt chiffré avec déduplication, sauvegardez des répertoires et des bases de données via stdin, automatisez les sauvegardes et restaurez vos fichiers ou dumps complets.

Qu'est-ce que plakar et pourquoi l'utiliser pour sauvegarder un VPS ?

Plakar est un outil de sauvegarde open source écrit en Go. Il se présente sous la forme d'un binaire unique avec chiffrement intégré, déduplication, interface web et planificateur natif. Le chiffrement est activé par défaut lorsque vous créez un dépôt. Plakar sauvegarde des chemins du système de fichiers, des dumps de bases de données via stdin, et des buckets S3. Le projet a rejoint la Linux Foundation et la CNCF en janvier 2026.

Si vous utilisez déjà restic ou borgbackup, voici les différences avec plakar. Restic nécessite un outil externe comme rclone pour la synchronisation distante et cron pour la planification. Borgbackup a besoin d'un serveur borg côté distant et ne propose pas d'interface web intégrée. Plakar gère tout cela nativement : plakar sync réplique entre dépôts, plakar scheduler exécute les sauvegardes à intervalles réguliers, et plakar ui lance une interface navigable pour parcourir les snapshots.

Restic et plakar supportent tous deux les sauvegardes via stdin pour piper des dumps de bases de données. Borgbackup non. Les trois outils dédupliquent. Plakar active le chiffrement par défaut à la création d'un dépôt, tandis que restic et borgbackup permettent de créer des dépôts non chiffrés.

Ce guide couvre les sauvegardes locales sur un seul VPS. Pour la réplication hors site vers un serveur distant, consultez Sauvegarde hors site et replication avec Plakar.

De quoi avez-vous besoin avant de commencer ?

Il vous faut un VPS sous Debian 12 ou Ubuntu 24.04 avec un accès root ou sudo. Un VPS Virtua Cloud convient parfaitement. Vous avez aussi besoin d'un accès SSH configuré avec authentification par clé et d'au moins 10 Go d'espace disque libre pour le dépôt de sauvegarde.

Si vous prévoyez de sauvegarder des bases de données, installez d'abord MySQL ou PostgreSQL. Ces installations ne sont pas couvertes ici.

Toutes les commandes de ce guide s'exécutent en tant que root. Si vous utilisez un utilisateur sudo, ajoutez sudo devant chaque commande.

Comment installer plakar sur Debian 12 ou Ubuntu 24.04 ?

Ajoutez le dépôt apt officiel de plakar, importez la clé de signature GPG et installez le paquet. Les mêmes étapes fonctionnent sur Debian 12 et Ubuntu 24.04. Le paquet apt gère les mises à jour automatiquement via votre cycle habituel de mise à jour système.

Installez les prérequis :

apt update
apt install -y curl gnupg2

Importez la clé GPG et ajoutez le dépôt :

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 clé GPG est liée au dépôt via signed-by. Apt ne fait confiance qu'aux paquets signés avec cette clé spécifique. Cela empêche un dépôt tiers compromis d'injecter des paquets dans votre système.

Installez plakar :

apt update
apt install -y plakar

Confirmez l'installation :

plakar version
plakar/v1.0.6

Comment créer un dépôt Kloset chiffré ?

Un dépôt Kloset est le backend de stockage de plakar. Il contient tous les snapshots sous forme dédupliquée et chiffrée. Chaque bloc de données est chiffré avant d'être écrit sur le disque. Le moteur Kloset déduplique avant le chiffrement : les blocs identiques entre différents snapshots ne sont stockés qu'une seule fois, tout en restant entièrement chiffrés au repos.

Créez un dépôt dans /var/backups/plakar :

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

Plakar demande une phrase de passe :

repository passphrase:

Générez une phrase de passe solide :

openssl rand -base64 32

Conservez cette phrase de passe dans un gestionnaire de mots de passe ou un emplacement sécurisé séparé. Si vous la perdez, vous perdez l'accès à tous les snapshots du dépôt. Il n'y a aucun mécanisme de récupération.

Restreignez les permissions du répertoire pour que seul root puisse y accéder :

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

L'emplacement par défaut du dépôt est ~/.plakar si vous omettez at <path>. Sur un serveur, utilisez un chemin dédié comme /var/backups/plakar pour ne pas dépendre du répertoire personnel d'un utilisateur.

Comment sauvegarder des chemins du système de fichiers avec plakar ?

Sauvegardez les répertoires importants d'un VPS : /etc pour la configuration système, /home pour les données utilisateur et /var/www pour le contenu web. Chaque commande plakar backup prend un seul chemin. Lancez une sauvegarde par répertoire, ou regroupez-les sous un parent commun. Les fichiers inchangés entre les snapshots ne sont stockés qu'une seule fois grâce à la déduplication.

plakar at /var/backups/plakar backup /etc

Chaque sauvegarde crée un snapshot identifié par un court ID hexadécimal. La sortie liste chaque fichier traité et un résumé :

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)

La seconde sauvegarde du même chemin s'exécute plus rapidement car seuls les blocs modifiés sont stockés. Sauvegardez d'autres chemins de la même manière :

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

Étiqueter les snapshots

Utilisez le flag -tag pour étiqueter les snapshots. Cela facilite le filtrage quand vous en avez beaucoup :

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

Exclure des fichiers

Les fichiers de log, caches et artefacts de build gaspillent de l'espace dans les sauvegardes. Utilisez -ignore pour des motifs en ligne :

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

Pour une liste plus longue, chargez les motifs depuis un fichier. La syntaxe suit les règles 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

Exécution à blanc

Prévisualisez ce que plakar sauvegarderait sans rien écrire dans le dépôt :

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

Cela liste chaque fichier correspondant aux critères de sauvegarde. Pratique pour ajuster les motifs d'exclusion.

Vérification à la sauvegarde

Ajoutez -check pour lancer une vérification d'intégrité immédiatement après la fin de la sauvegarde :

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

Cela coûte quelques secondes supplémentaires mais détecte la corruption tôt.

Comment sauvegarder une base de données MySQL avec plakar ?

Pipez la sortie de mysqldump directement dans plakar en utilisant la source stdin:. Aucun fichier de dump intermédiaire ne touche le disque. Le flux SQL passe directement de mysqldump au pipeline de chiffrement et de déduplication de plakar.

Pour une seule base de données :

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

Ce que fait chaque flag :

  • --single-transaction : prend un snapshot cohérent des tables InnoDB sans les verrouiller. Les autres requêtes continuent de s'exécuter.
  • --routines : inclut les procédures stockées et les fonctions.
  • --triggers : inclut les triggers de table.
  • --events : inclut les événements planifiés.

Pour toutes les bases de données du serveur :

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 omet les métadonnées GTID. Cela rend le dump portable entre différentes instances MySQL sans conflits GTID lors de l'import.

Le snapshot stocke le dump SQL comme un fichier unique nommé d'après le label stdin:. Vous référencez ce nom lors de la restauration.

Comment sauvegarder une base de données PostgreSQL avec plakar ?

L'approche est identique : pipez pg_dump dans plakar via stdin:. L'authentification PostgreSQL utilise typiquement l'authentification peer pour l'utilisateur système postgres, donc exécutez la commande de dump sous ce compte.

Pour une seule base de données :

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

Pour toutes les bases de données et les rôles, utilisez pg_dumpall :

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

pg_dumpall inclut les objets globaux comme les rôles et les tablespaces que pg_dump ignore. Utilisez-le quand vous avez besoin d'une sauvegarde complète du cluster. pg_dump --format=plain produit un fichier SQL brut qui se pipe directement dans psql lors de la restauration.

Comment lister et parcourir les snapshots plakar ?

Listez tous les snapshots du dépôt avec plakar ls. Chaque ligne affiche l'horodatage, l'ID du snapshot, la taille compressée, la durée de la sauvegarde et le chemin source.

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 /

Les sauvegardes stdin apparaissent avec / comme chemin source dans la liste. L'ID du snapshot permet de les distinguer.

Filtrer par tag :

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

Parcourir le contenu d'un snapshot de système de fichiers :

plakar at /var/backups/plakar ls a5bcf13b

Cibler un sous-répertoire :

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

Interface web

Pour une interface visuelle, lancez l'interface web intégrée. Sur un serveur sans écran, ajoutez -no-spawn pour empêcher l'ouverture automatique du navigateur :

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

L'interface permet de parcourir les snapshots, voir le contenu des fichiers et télécharger des fichiers individuels. Plakar génère automatiquement un jeton d'authentification et affiche l'URL avec le jeton.

Pour désactiver l'authentification par jeton (déconseillé en production) :

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

Arrêtez-la avec Ctrl+C quand vous avez fini. Pour un accès permanent, placez un reverse proxy avec TLS devant et gardez l'authentification par jeton activée.

Comment vérifier l'intégrité des sauvegardes avec plakar ?

Lancez plakar check sur un ID de snapshot pour vérifier chaque bloc. Plakar relit chaque bloc du dépôt, le déchiffre et recalcule les sommes de contrôle. Si un bloc a été corrompu ou altéré, la vérification échoue.

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

Chaque fichier obtient une coche si sa somme de contrôle correspond. Les fichiers corrompus affichent un marqueur d'erreur.

Pour vérifier tous les snapshots du dépôt d'un coup :

plakar at /var/backups/plakar check

Pour une vérification structurelle plus rapide qui saute la vérification des digests sur les blocs individuels :

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

Lancez des vérifications d'intégrité régulièrement. Une fois par semaine est une cadence raisonnable pour la plupart des VPS. Une sauvegarde que vous ne vérifiez jamais est une sauvegarde en laquelle vous ne pouvez pas avoir confiance.

Comment restaurer des fichiers depuis une sauvegarde plakar ?

Restaurez un snapshot complet dans un répertoire cible avec plakar restore. Plakar recrée l'arborescence complète sous le chemin cible. Les permissions et horodatages d'origine sont préservés.

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

Pour restaurer un seul fichier, utilisez plakar cat et redirigez la sortie :

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

Pour restaurer un seul répertoire d'un snapshot :

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

Cela extrait uniquement /var/www et son contenu. Tout le reste du snapshot est laissé intact.

Restaurez toujours dans un emplacement temporaire d'abord. Comparez les fichiers restaurés avec l'état actuel du serveur avant d'écraser quoi que ce soit en place. Une restauration imprudente vers / peut écraser des fichiers de configuration qui ont changé depuis la prise du snapshot.

Comment restaurer un dump de base de données depuis plakar ?

Utilisez plakar cat pour streamer le dump SQL depuis un snapshot directement dans le client de base de données. Aucun fichier intermédiaire sur le disque. Utilisez l'ID du snapshot du backup stdin que vous souhaitez restaurer.

MySQL

Restaurer une seule base de données :

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

Restaurer toutes les bases de données depuis un dump complet :

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

PostgreSQL

Restaurer une seule base de données :

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

Restaurer le cluster complet :

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

Testez les restaurations sur une base de données hors production ou un serveur de test dédié. Une stratégie de sauvegarde sans restauration testée n'est pas une stratégie de sauvegarde. Planifiez un test de restauration au moins une fois par trimestre.

Comment automatiser les sauvegardes avec le planificateur de plakar ?

Plakar intègre un planificateur qui exécute des tâches de sauvegarde à des intervalles définis. Pas besoin de cron. Vous définissez les tâches dans un fichier YAML et plakar gère le timing, l'exécution et les vérifications d'intégrité optionnelles après la sauvegarde.

D'abord, enregistrez le dépôt avec des identifiants sauvegardés pour que le planificateur puisse y accéder sans demander la phrase de passe de manière interactive. Créez un fichier de phrase de passe avec des permissions restreintes :

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

Utilisez cette phrase de passe lors de la création du dépôt (ou mettez-le à jour si vous en avez déjà créé un avec une phrase de passe différente). Enregistrez le dépôt par nom :

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

Maintenant, créez la configuration du planificateur. Chaque tâche sauvegarde un chemin :

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

Testez-le manuellement d'abord :

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

Le planificateur tourne au premier plan et journalise l'exécution des tâches. Arrêtez-le avec Ctrl+C. Pour le lancer en daemon d'arrière-plan, utilisez le service systemd décrit ci-dessous.

Le planificateur gère les sauvegardes de système de fichiers nativement. Les dumps de bases de données qui nécessitent un pipe via mysqldump ou pg_dump requièrent un script wrapper. Créez-en un :

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

Comment exécuter le planificateur plakar en tant que service systemd ?

Encapsulez le planificateur dans une unité systemd pour qu'il démarre au boot, redémarre en cas d'échec et s'intègre avec journalctl pour les 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 vous exécutez aussi le script de sauvegarde des bases de données, créez un timer séparé :

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

Activez et démarrez le tout. enable --now fait survivre le service aux redémarrages et le lance immédiatement :

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)

Pour le timer de sauvegarde des bases de données :

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

Surveillez les logs du planificateur :

journalctl -u plakar-scheduler.service -f

Comment supprimer d'anciens snapshots ?

Supprimez un snapshot par son ID. Par défaut, plakar rm effectue une exécution à blanc et montre ce qui serait supprimé. Ajoutez -apply pour réellement supprimer le 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 déduplication de plakar signifie que la suppression d'un snapshot ne libère de l'espace que pour les blocs de données non référencés par d'autres snapshots. Si deux snapshots partagent 90 % de leurs données, en supprimer un ne libère que les 10 % uniques.

Un problème ?

<< repository passphrase >> à chaque commande. Plakar demande la phrase de passe à chaque accès interactif au dépôt. Enregistrez le dépôt avec plakar store add et un passphrase_cmd comme montré dans la section planificateur. Puis référencez le dépôt par nom :

plakar at @mybackups backup /etc

Vous pouvez aussi utiliser le flag -keyfile pour pointer vers un fichier de phrase de passe pour les commandes ponctuelles :

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

N'exportez jamais PLAKAR_PASSPHRASE dans votre profil shell ou .bashrc. La valeur finit dans l'historique du shell et les listes de processus. Utilisez le pattern passphrase_cmd ou le flag -keyfile.

<< permission denied >> lors de la sauvegarde. Plakar a besoin d'un accès en lecture aux fichiers sources. L'exécution en tant que root évite ce problème. Si vous utilisez un utilisateur de sauvegarde dédié, accordez les permissions de lecture sur les répertoires cibles via des ACL ou l'appartenance à un groupe.

Les snapshots sont plus volumineux que prévu. Vous sauvegardez probablement des fichiers de log, des caches ou des artefacts de build. Utilisez -ignore ou -ignore-file pour les exclure. Lancez un -scan d'abord pour voir ce qui est inclus.

<< no space left on device >> pendant la sauvegarde. Le dépôt de sauvegarde et les fichiers temporaires de paquets ont besoin d'espace disque. Vérifiez avec df -h. Le dépôt grossit au fil du temps avec l'ajout de snapshots. Surveillez-le.

Lire les logs de plakar. Plakar écrit sa sortie sur stdout. Redirigez stdout et stderr vers un fichier pour les examiner :

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

Pour une sortie verbeuse, utilisez le flag global -trace (il se place avant at) :

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

Prochaines étapes

Vos sauvegardes tournent maintenant selon un planning, mais elles résident sur le même disque que les données qu'elles protègent. Une panne de disque, un ransomware ou un serveur compromis les emportent toutes d'un coup.

Externalisez vos sauvegardes. Sauvegarde hors site et replication avec Plakar couvre la réplication des snapshots vers un serveur distant ou un stockage compatible S3 avec plakar sync.


Copyright 2026 Virtua.Cloud. Tous droits réservés. Ce contenu est une création originale de l'équipe Virtua.Cloud. Toute reproduction, republication ou redistribution sans autorisation écrite est interdite.

Prêt à essayer ?

Déployez votre serveur en quelques secondes. Linux, Windows ou FreeBSD.

Voir les offres VPS