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
[modifier | modifier le wikicode]Ce que sauvegarde SFTPGo
[modifier | modifier le wikicode]SFTPGo ne stocke pas les données clientes elles-mêmes. Il stocke la configuration des accès dans /var/lib/sftpgo/sftpgo.db. La perte de cette base n’efface pas les fichiers des clients, mais fait perdre les comptes, les permissions et la configuration SFTPGo.
Principe
[modifier | modifier le wikicode]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é
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]- daily : conservation 7 jours
- sql : conservation 7 jours
- weekly : conservation 56 jours
- manual : conservation 30 jours
Fonctionnement du script
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]Sauvegarde manuelle :
/usr/local/sbin/backup_sftpgo.sh manual
Restauration
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]- 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
[modifier | modifier le wikicode]- 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
[modifier | modifier le wikicode]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
[modifier | modifier le wikicode]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/.