Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Sauvegarde et restauration de SFTPGo
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 :
- arrêt temporaire du service sftpgo
- copie de /var/lib/sftpgo/sftpgo.db vers /var/backups/sftpgo/daily/sftpgo_YYYY-MM-DD.db
- redémarrage du service sftpgo
- génération d’un dump SQL compressé dans /var/backups/sftpgo/sql/
- rotation des anciennes sauvegardes
- le dimanche, copie supplémentaire dans /var/backups/sftpgo/weekly/
En mode manual :
- arrêt temporaire du service sftpgo
- copie horodatée dans /var/backups/sftpgo/manual/
- redémarrage du service
- 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/.