Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Sauvegarde et restauration de SFTPGo

De AJLSM
Version datée du 14 avril 2026 à 12:01 par Jlarvers (discussion | contributions) (Page créée avec « == Sauvegarde et restauration de SFTPGo == category:eole3category:SFTPGo === Principe === La configuration de SFTPGo est stockée dans la base SQLite suivante : ... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Sauvegarde et restauration de SFTPGo

Principe

La configuration de SFTPGo est stockée dans la base SQLite suivante :

/var/lib/sftpgo/sftpgo.db

Cette base contient notamment :

  • les utilisateurs SFTP
  • leur configuration
  • les droits et paramètres gérés par SFTPGo

Sa sauvegarde est critique.

Script utilisé

Script :

/usr/local/sbin/backup_sftpgo.sh

Service concerné :

sftpgo

Répertoire racine des sauvegardes :

/var/backups/sftpgo

Arborescence utilisée :

  • /var/backups/sftpgo/daily
  • /var/backups/sftpgo/weekly
  • /var/backups/sftpgo/manual
  • /var/backups/sftpgo/sql

Planification cron

Sauvegarde quotidienne :

15 2 * * * /usr/local/sbin/backup_sftpgo.sh daily >> /var/log/backup_sftpgo.log 2>&1

Cette tâche lance chaque nuit à 02h15 :

  • une copie quotidienne de la base SQLite
  • un dump SQL compressé
  • une rotation des anciennes sauvegardes
  • une copie hebdomadaire le dimanche

Politique de rétention

  • daily : conservation 7 jours
  • sql : conservation 7 jours
  • weekly : conservation 56 jours
  • manual : conservation 30 jours

Fonctionnement du script

En mode daily :

  1. arrêt temporaire du service sftpgo
  2. copie de /var/lib/sftpgo/sftpgo.db vers /var/backups/sftpgo/daily/sftpgo_YYYY-MM-DD.db
  3. redémarrage du service sftpgo
  4. génération d’un dump SQL compressé dans /var/backups/sftpgo/sql/
  5. rotation des anciennes sauvegardes
  6. le dimanche, copie supplémentaire dans /var/backups/sftpgo/weekly/

En mode manual :

  1. arrêt temporaire du service sftpgo
  2. copie horodatée dans /var/backups/sftpgo/manual/
  3. redémarrage du service
  4. rotation des anciennes sauvegardes manuelles

Vérifications courantes

Vérifier le cron :

crontab -l

Vérifier les logs :

tail -n 50 /var/log/backup_sftpgo.log

Lister les sauvegardes :

ls -lh /var/backups/sftpgo/daily ls -lh /var/backups/sftpgo/weekly ls -lh /var/backups/sftpgo/manual ls -lh /var/backups/sftpgo/sql

Vérifier la présence du dernier backup quotidien :

ls -l /var/backups/sftpgo/daily/sftpgo_$(date +%F).db

Lancement manuel

Sauvegarde manuelle :

/usr/local/sbin/backup_sftpgo.sh manual

Restauration

ATTENTION : Toujours arrêter SFTPGo avant restauration de la base SQLite.

Arrêt du service :

systemctl stop sftpgo

Restauration d’une sauvegarde quotidienne :

cp /var/backups/sftpgo/daily/sftpgo_YYYY-MM-DD.db /var/lib/sftpgo/sftpgo.db

Correction des droits :

chown sftpgo:sftpgo /var/lib/sftpgo/sftpgo.db chmod 600 /var/lib/sftpgo/sftpgo.db

Redémarrage :

systemctl start sftpgo

Vérification après restauration

  • vérifier que le service démarre
  • vérifier que l’interface SFTPGo est accessible
  • vérifier que les comptes attendus sont présents
  • tester une connexion SFTP avec un compte client

Commandes utiles :

systemctl status sftpgo journalctl -u sftpgo -n 50 sqlite3 /var/lib/sftpgo/sftpgo.db "select username,home_dir from users limit 20;"

Points d’attention

  • le script arrête brièvement SFTPGo pendant la copie de la base SQLite
  • le dump SQL est généré après redémarrage du service
  • la sauvegarde protège la configuration SFTPGo, pas les données clientes elles-mêmes
  • les données clientes restent sauvegardées séparément via ZFS, rsync et les autres mécanismes de l’infrastructure

En cas de problème

Si le backup quotidien n’est plus créé :

  • vérifier le cron
  • vérifier /var/log/backup_sftpgo.log
  • lancer le script manuellement
  • vérifier l’espace disque dans /var/backups

Si SFTPGo ne redémarre pas après backup ou restauration :

  • consulter les logs :
 journalctl -u sftpgo -n 100
  • vérifier les droits sur /var/lib/sftpgo/sftpgo.db
  • restaurer une sauvegarde antérieure si la base est corrompue

Recommandation d’exploitation

Cette sauvegarde locale est indispensable mais ne remplace pas une copie externe. Il est recommandé de prévoir en complément une recopie hors serveur de /var/backups/sftpgo/.