Le Wiki de Tchack

Guides et documentation sur le serveur tchack.xyz

Outils pour utilisateurs

Outils du site


adminsys:sauvegardes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
adminsys:sauvegardes [2020/01/06 12:03] – ajout .nobackup jaxomadminsys:sauvegardes [2022/11/05 23:20] (Version actuelle) – retrait Raspberry Pi jaxom
Ligne 1: Ligne 1:
 ====== Sauvegardes ====== ====== Sauvegardes ======
  
-Des sauvegardes peuvent être effectuées manuellement ou automatiquement avec l'outil de backups de Yunohost ''yunohost backup create''. Celui-ci crée une archive datée dans le répertoire ''/home/yunohost.backup/archives''. Parallèlement, une copie complète du système du Raspberry Pi est sauvegardée à distance avec ''rsync'' quotidiennement, via un [[adminsys:scriptsauvegarde|script dédié]]. Enfin, une automatisation hebdomadaire [[borgbackup|avec Borg]] est en place.+Tchack dispose de deux sauvegardes distantes hebdomadaires, faites sur un NAS et un VPS ( voir page [[adminsys:serveur|architecture]]).Une automatisation hebdomadaire [[borgbackup|avec Borg]] est en place. 
 + 
 +Des sauvegardes peuvent aussi être effectuées manuellement ou automatiquement avec l'outil de backups de Yunohost ''yunohost backup create''. Celui-ci crée une archive datée dans le répertoire ''/home/yunohost.backup/archives''
  
 Les éléments du système hors Yunohost, tels l'appli RPi-Monitor, les clés SSH, les comptes utilisateurs du serveur, les journaux d'installation… ne sont pas sauvegardés par le service de Yunohost. Ils sont donc plus compliqués à restaurer dans le [[adminsys:pra|plan de reprise d'activité]] actuel. //NB: La procédure "distante" a été dupliquée avec succès lors du déploiement du [[adminsys:vps|VPS]].// Les éléments du système hors Yunohost, tels l'appli RPi-Monitor, les clés SSH, les comptes utilisateurs du serveur, les journaux d'installation… ne sont pas sauvegardés par le service de Yunohost. Ils sont donc plus compliqués à restaurer dans le [[adminsys:pra|plan de reprise d'activité]] actuel. //NB: La procédure "distante" a été dupliquée avec succès lors du déploiement du [[adminsys:vps|VPS]].//
  
-:!: Pour des raisons de performance, les serveurs ne sont pas chiffrés, et seules les sauvegardes Borg le sont.+NB: Pour des raisons de performance, les serveurs ne sont pas chiffrés, et seules les sauvegardes Borg le sont.
  
 :!: L'automatisation est un point clé de la survie et de la qualité du serveur : le [[adminsys:pra|P.R.A.]] doit être testé régulièrement ( FIXME fonctionnement partiel au 18/12/2017). :!: L'automatisation est un point clé de la survie et de la qualité du serveur : le [[adminsys:pra|P.R.A.]] doit être testé régulièrement ( FIXME fonctionnement partiel au 18/12/2017).
Ligne 11: Ligne 13:
  
  
-===== Automatisation locale ===== 
-Un [[adminsys:script-save-auto-borg-rpi|script]] est appelé chaque dimanche par //cron// : il crée une archive de sauvegarde avec l'outil de yunohost et la recopie dans un repository chiffré par //borg//. Les réglages et les applications sont ainsi sauvegardées dans deux archives distinctes, plus une pour Nextcloud (qui nécessite un réglage distinct, pour sauvegarder les réglages sans la data, trop lourde). 
  
-Les archives sont préfixées "auto-", et automatiquement supprimées au fur et à mesure. Le script conserve une copie à J-7 et à J-30. Le repository //borg// garde une copie par mois, sans limite de temps, avec la commande ''[[https://borgbackup.readthedocs.io/en/stable/usage/prune.html|prune]]'' (décompte des sauvegardes seulement si fichier présent !) 
  
-Puis le script enchaine avec la copie du repo vers le NAS, via ''rsync''.+===== Utilisation de Borg Backup ===== 
 +En 2021, passage à l'application [[adminsys:borgbackup|Borg]] (serveur et client packagés pour Yunohost). Le Serveur et le VPS envoient vers le BackupVPS. 
 + 
 +Le BackupVPS partage son espace disque (250GB) ainsi : 
 +   * 200 GB : Serveur 
 +   * 30  GB : VPS 
 +   * 20  GB : VPS Hereli 
  
-===== Automatisation distante =====+===== Automatisation NAS =====
 L'automatisation des sauvegardes distantes vers le NAS de Hervé est en place selon le protocole suivant : L'automatisation des sauvegardes distantes vers le NAS de Hervé est en place selon le protocole suivant :
  
   * Il faut tout d'abord pouvoir s'y connecter sans mot de passe : pour cela on place une clé SSH sans phrase de passe (dans le dossier ''/home/pi/.ssh'') dont la clé publique est envoyée au NAS avec ''ssh-copy-id'', pour le compte “admin@NASHervé”.    * Il faut tout d'abord pouvoir s'y connecter sans mot de passe : pour cela on place une clé SSH sans phrase de passe (dans le dossier ''/home/pi/.ssh'') dont la clé publique est envoyée au NAS avec ''ssh-copy-id'', pour le compte “admin@NASHervé”. 
   * Pour pouvoir lire l'ensemble des fichiers à sauvegarder sur le système, le script de sauvegarde sera lancée par root. Par conséquent, il faut copier les clés SSH de l'utilisateur 'pi' vers le dossier /root/.ssh pour se connecter au NAS sans mot de passe.   * Pour pouvoir lire l'ensemble des fichiers à sauvegarder sur le système, le script de sauvegarde sera lancée par root. Par conséquent, il faut copier les clés SSH de l'utilisateur 'pi' vers le dossier /root/.ssh pour se connecter au NAS sans mot de passe.
 +
  
 ==== Base de données ==== ==== Base de données ====
Ligne 30: Ligne 37:
 On réalise donc, avant la sauvegarde quotidienne, une copie de l'ensemble des tables de la base de données, en utilisant la commande ''mysqldump'' et l'authentification selon [[https://stackoverflow.com/questions/9293042/how-to-perform-a-mysqldump-without-a-password-prompt/32409448|ce post]]. Le mot de passe maître de MySQL est copié depuis ''/etc/yunohost/mysql''. On réalise donc, avant la sauvegarde quotidienne, une copie de l'ensemble des tables de la base de données, en utilisant la commande ''mysqldump'' et l'authentification selon [[https://stackoverflow.com/questions/9293042/how-to-perform-a-mysqldump-without-a-password-prompt/32409448|ce post]]. Le mot de passe maître de MySQL est copié depuis ''/etc/yunohost/mysql''.
  
-==== Rsync quotidien ==== 
-Pour le RPi uniquement (qui contient des services critiques), une sauvegarde brute et non-chiffrée est faite quotidiennement en push, avec la commande suivante :  
  
-''rsync -azPvH --exclude-from=/usr/local/src/RsyncExclusions.txt --delete-during –bwlimit=2.1m / admin@NASHervé:/share/homes/Elias/Rsync >> /var/log/rsyncSaveHerve/rsync.log'' 
- 
-//Options : ''-a'' pour archiver, ''-z'' pour compresser, ''-P'' pour avoir des barres de chargement et les transferts partiels, ''-v'' pour être verbeux, ''-H'' pour préserver les liens durs, ''–bwlimit'' pour limiter l'upload et ne pas saturer la connexion.// 
- 
-  * Le fichier ''RsyncExclusion.txt'' liste les dossiers inutiles à sauvegarder, tels ''/tmp*'' ou ''/proc*'' ainsi que les repository //borg//, déjà copiés au rythme hebdomadaire. 
  
  
 ==== Monitoring ==== ==== Monitoring ====
- 
 L'historique des transferts est loggué dans un fichier dédié, avec un timestamp initial et final par la commande ''date » /var/log/rsyncSaveHerve/rsync.log''. L'historique du fichier de log est géré par le service UNIX //logrotate//. Enfin, on automatise l'ensemble du script en l'appelant via le daemon CRON du root : ''sudo crontab -e'' et on ajoute la ligne suivante ''30 3 * * * /usr/local/src/Rsync-SaveYH.sh''. L'historique des transferts est loggué dans un fichier dédié, avec un timestamp initial et final par la commande ''date » /var/log/rsyncSaveHerve/rsync.log''. L'historique du fichier de log est géré par le service UNIX //logrotate//. Enfin, on automatise l'ensemble du script en l'appelant via le daemon CRON du root : ''sudo crontab -e'' et on ajoute la ligne suivante ''30 3 * * * /usr/local/src/Rsync-SaveYH.sh''.
  
Ligne 47: Ligne 46:
  
 :!: L'adresse IPv4 du NASHervé peut changer, mais son URL fixe est fournie par le service Qnap. Ce service peut limiter le débit des transferts de longue durée. Une vigilance est à mener sur ce point, avec l'utilisation éventuelle du service https://api.ident.me et d'un script coté NAS pour utiliser l'IP directement. :!: L'adresse IPv4 du NASHervé peut changer, mais son URL fixe est fournie par le service Qnap. Ce service peut limiter le débit des transferts de longue durée. Une vigilance est à mener sur ce point, avec l'utilisation éventuelle du service https://api.ident.me et d'un script coté NAS pour utiliser l'IP directement.
 +
 +==== BackupFTP chez OVH ====
 +L'accès FTP est bridé, marche bien avec le client ''ncftp''.
 +https://www.lije-creative.com/backup-ftp-serveur-dedie-ovh/
  
 ===== Documentation ===== ===== Documentation =====
 +====== Obsolète : Automatisation locale ======
 +Un [[adminsys:script-save-auto-borg-rpi|script]] est appelé chaque dimanche par //cron// : il crée une archive de sauvegarde avec l'outil de yunohost et la recopie dans un repository chiffré par //borg//. Les réglages et les applications sont ainsi sauvegardées dans deux archives distinctes, plus une pour Nextcloud (qui nécessite un réglage distinct, pour sauvegarder les réglages sans la data, trop lourde).
 +
 +Les archives sont préfixées "auto-", et automatiquement supprimées au fur et à mesure. Le script conserve une copie à J-7 et à J-30. Le repository //borg// garde une copie par mois, sans limite de temps, avec la commande ''[[https://borgbackup.readthedocs.io/en/stable/usage/prune.html|prune]]'' (décompte des sauvegardes seulement si fichier présent !)
 +
 +Puis le script enchaine avec la copie du repo vers le NAS, via ''rsync''.
 +==== Rsync quotidien ====
 +Pour le RPi uniquement (qui contient des services critiques), une sauvegarde brute et non-chiffrée est faite quotidiennement en push, avec la commande suivante : 
 +
 +''rsync -azPvH --exclude-from=/usr/local/src/RsyncExclusions.txt --delete-during –bwlimit=2.1m / admin@NASHervé:/share/homes/Elias/Rsync >> /var/log/rsyncSaveHerve/rsync.log''
 +
 +//Options : ''-a'' pour archiver, ''-z'' pour compresser, ''-P'' pour avoir des barres de chargement et les transferts partiels, ''-v'' pour être verbeux, ''-H'' pour préserver les liens durs, ''–bwlimit'' pour limiter l'upload et ne pas saturer la connexion.//
 +
 +  * Le fichier ''RsyncExclusion.txt'' liste les dossiers inutiles à sauvegarder, tels ''/tmp*'' ou ''/proc*'' ainsi que les repository //borg//, déjà copiés au rythme hebdomadaire.
 +
 +===== Sources =====
  
-Le script ''Rsync-SaveYH.sh'' quotidien est récupérable sur [[adminsys:scriptSauvegarde|cette page]]. Il combine le meilleur des liens suivants :+Ine copie complète du système du Raspberry Pi était sauvegardée à distance avec ''rsync'' quotidiennement, via un [[adminsys:scriptsauvegarde|script dédié]].Le script ''Rsync-SaveYH.sh'' quotidien est récupérable sur [[adminsys:scriptSauvegarde|cette page]]. Il combine le meilleur des liens suivants :
  
    * https://raspberrypi.stackexchange.com/questions/5427/can-a-raspberry-pi-be-used-to-create-a-backup-of-itself/28087#28087    * https://raspberrypi.stackexchange.com/questions/5427/can-a-raspberry-pi-be-used-to-create-a-backup-of-itself/28087#28087
adminsys/sauvegardes.1578308593.txt.gz · Dernière modification : 2020/01/06 12:03 de jaxom