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

Sauvegarde et restauration de SFTPGo

De AJLSM
Aller à la navigation Aller à la recherche

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.

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 :

  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

[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

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/.