Outils pour utilisateurs

Outils du site


auto-hebergement:yunohost:sauvegarder-yunohost

Système de backup

Principe de sauvegarde

Le risque 0 n'existant pas, l'objectif va être de réduire ce risque au maximum. En effet, la règle du 3-2-1 pour la sauvegarde, est là pour permettre de gérer efficacement n'importe quel scénario de défaillance (perte de support, incendie du lieu de stockage,…).

Une bonne sauvegarde doit donc répondre à ce principe du 3-2-1 et est donc constituée d'au moins :

  • 3 copies des données (en comptant les données originales) : avec trois copies, la probabilité de défaillance simultanée des trois périphériques est très faible
  • 2 supports différents (au moins 2 stockages distincts) : il est important d'avoir la copie de production d'une part (serveur), une sauvegarde sur un premier périphérique (disque dur externe) et la troisième sauvegarde sur un autre périphérique (clé USB)
  • 1 copie en hors site (au moins 2 lieux distincts) : dans le cas de la perte (à cause d'un incendie par exemple) du serveur et de la copie sur disque dur présent dans le même lieu, il restera la copie en hors site
Idéalement, il est préférable de réaliser ce principe avec 2 méthodes distinctes (exemple : rsync et borg).

Mettre en place un backup

Créer une archive

Créer un script dans /usr/local/bin/ :

backup.sh
#!/bin/bash
 
DATE=$(date +%Y-%m-%d-%H%M%S)
BACKUP_DIR="/media/stockage/backup/"
SOURCE="/home/dossier_a_archiver/"
 
tar -cvzpf $BACKUP_DIR/backup-$DATE.tar.gz $SOURCE
 
/usr/bin/find $BACKUP_DIR -mtime +15 -delete
Pour de multiple fichiers/dossiers : SOURCE=“/repertoire/source_1 /repertoire/source_2 /repertoire/source_3”
En faisant une sauvegarde 1 fois par semaine, avec un historique de 15 jours, 2 sauvegardes seront disponibles en permanance.

En faisant une sauvegarde 3 fois par semaine, avec un historique de 15 jours, 6 sauvegardes seront disponibles en permanance.

Attention à bien prendre en compte la taille des archives et de veiller à l'expace disponible sur l'espace de stockage !

Déclarer le script dans le crontab de root avec la commande sudo crontab -e :

00 3 * * 1,3,5 /usr/local/bin/backup.sh > /usr/local/bin/log_backup

Créer une synchronisation (Rsync)

Mode mirroir, de A vers B :

rsync -avz --delete /Origine_A/ /Destination_B/

Options :

  • -a : mode archive (équivaut à -rlptgoD), préserve les dates, permissions, et autre, des fichiers (inclus l'option récursivité)
  • -v : mode verbeux (affichage de ce que fait la commande durant son exécution)
  • -z : comprime les fichiers pendant le transfert
  • –delete : supprime les fichiers exclusifs de la destination
En mode miroir, avec l’option –delete, les fichiers exclusifs de B sont donc supprimés, même s’ils viennent d’une précédente synchronisation depuis A et qu’ils ont été depuis supprimés de A.

Au final, B est l’image de A :

  • Tout ce qui est modifié sur A est copié vers B ;
  • Tout ce qui est modifié sur B, est remplacé par les fichiers de même nom de A ;
  • Les fichiers plus récents sur B sont remplacés par les fichiers de A, même antérieurs ;
  • Les fichiers propres à B sont supprimés.

Remarques :

  • Le slash final des noms de dossiers est important. En effet rsync dir1/ dir2/ n’a pas le même effet que rsync dir1 dir2/ :
    • La première commande copiera le contenu de dir1/ dans dans2/ (dir2/files)
    • La deuxième commande copiera le dossier dir1/ dans dir2/ (dir2/dir1/files)

Autres options :

  • –info=progress1 : affichage de la progression fichier par fichier
  • –info=progress2 : affichage de la progression globale
  • –backup : mode backup
  • –backup-dir : dossier de backup (en mode backup)
  • –stats : afficher un résumé détaillé en fin de copie

Mettre en place un backup sur YunoHost

Créer un script dans /usr/local/bin/ :

backup.sh
#!/bin/bash
 
DATE=$(date +%Y-%m-%d-%H%M%S)
BACKUP_DIR="/media/stockage/backup_ynh/"
SOURCE="/home/yunohost.backup/"
 
yunohost backup create --name backup-ynh-$DATE --system
 
yunohost backup create --name backup-apps-$DATE --apps freshrss shaarli wallabag2
 
rsync -avz --delete --max-size=1024MB $SOURCE $BACKUP_DIR
 
/usr/bin/find $SOURCE -mtime +15 -delete

Déclarer le script dans le crontab de root avec la commande sudo crontab -e :

00 3 * * 1,3,5 sh /usr/local/bin/backup.sh > /usr/local/bin/log_backup

Backup à distance avec rsync

Dans le cas d'une sauvegarde à distante (essentielle dans un principe de backup en 3-2-1), il est nécessaire d'utiliser la commande :

rsync -avz --delete --max-size=1024MB -e "ssh -p 22222" /Origine_A/ [username]@[host]:/Destination_B/

Mise à jour : https://yunohost.org/fr/backup/borgbackup https://forum.yunohost.org/t/borgbackup-restauration-post-installation-a-titre-informatif/15343

auto-hebergement/yunohost/sauvegarder-yunohost.txt · Dernière modification : 2022/09/16 12:12 de m1k3