Outils pour utilisateurs

Outils du site


linux:rsnapshot (lu 2154 fois)

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édentes Révision précédente
Prochaine révision
Révision précédente
linux:rsnapshot [05-12-2013 09:38]
edmc73 [Installation]
linux:rsnapshot [03-09-2023 18:36] (Version actuelle)
edmc73 [Démarrer le service]
Ligne 53: Ligne 53:
 Comme bon vous semble. Pour mon cas, je veux sauvegarder tout le répertoire /var/www de mon serveur web distant vers mon serveur de backup ou rsnapshot est installé et ce de façon journalière. Je vais donc mettre Comme bon vous semble. Pour mon cas, je veux sauvegarder tout le répertoire /var/www de mon serveur web distant vers mon serveur de backup ou rsnapshot est installé et ce de façon journalière. Je vais donc mettre
  
-  backup  root@edmc73.com:/var/www  edmc73.com/+  backup  root@edmc73.com:/var/www edmc73.com/
      
 La sauvegarde du répertoire /var/www de mon serveur web se fera sur mon serveur de backup dans /media/backup/edmc73.com/var/www La sauvegarde du répertoire /var/www de mon serveur web se fera sur mon serveur de backup dans /media/backup/edmc73.com/var/www
  
 Si votre serveur web à un port ssh différent, vous pouvez le spécifier de cette façon. Si votre serveur web à un port ssh différent, vous pouvez le spécifier de cette façon.
-  backup  root@edmc73.com:/var/www  edmc73.com/ ssh_args=-p1234+  backup  root@edmc73.com:/var/www edmc73.com/ ssh_args=-p1234
      
-<note warning>Séparez bien vos colonnes par une tabulation et non par un espace !!!</note>+<note warning>Séparez bien vos colonnes par une tabulation et non par un espace !!! 
 +Mettez toujours un / après un nom de répertoire !!</note>
 ===== Test ===== ===== Test =====
  
Ligne 94: Ligne 95:
  
 Vous pouvez lancer la commande suivante à la main Vous pouvez lancer la commande suivante à la main
-  rsnapshot daily+  rsnapshot -v daily
      
 Mais sachez qu'à chaque fois que vous la lancerez, vous décalerez votre sauvegarde. daily.0 deviendra daily.1 et la nouvelle sauvegarde sera daily.0 Mais sachez qu'à chaque fois que vous la lancerez, vous décalerez votre sauvegarde. daily.0 deviendra daily.1 et la nouvelle sauvegarde sera daily.0
Ligne 163: Ligne 164:
 Recherchez **RsyncServer**. Par défaut il est en **Manuel**, double-cliquez dessus, mettez le type de démarrage en automatique pour qu'il se lance à l'ouverture de Windows puis cliquez sur Démarrer pour lancer le service. Recherchez **RsyncServer**. Par défaut il est en **Manuel**, double-cliquez dessus, mettez le type de démarrage en automatique pour qu'il se lance à l'ouverture de Windows puis cliquez sur Démarrer pour lancer le service.
  
-<note important>Pensez à ouvrir le port 873 de votre firewall</note>+<note important>Pensez à ouvrir le port 873 de votre firewall  \\ 
 +"Pare-feu Windows Defender" / "Paramètres avancés"\\ 
 +"Règles de trafic entrant" 
 + 
 +"RsyncServer" \\ 
 +"Protocoles et ports" : TCP : 873 \\ 
 +"Etendue" : ajouter l'adresse ip de votre serveur 
 +</note>
  
  
Ligne 223: Ligne 231:
  
 Et voila, il ne vous reste plus qu'à installer un petit [[linux:samba|server samba]] afin d'accéder facilement à vos backup depuis windows et vous voila tranquille ;) Et voila, il ne vous reste plus qu'à installer un petit [[linux:samba|server samba]] afin d'accéder facilement à vos backup depuis windows et vous voila tranquille ;)
 +
 +===== Logguer les étapes rsync =====
 +
 +Créer un script intermédiaire qui sera appelé par rsnapshot en tant que programme rsync (voir fichier de conf)
 +
 +<file bash rsyncLog>
 +# Votre traitement pour logguer ce que vous voulez
 +
 +/usr/bin/rsync $@
 +
 +if [ $? -ne 0 ]
 +then
 +  # traitement si la commande rsync échoue
 +else
 +  # traitement si la commande rsync à fonctionné
 +fi
 +</file>
 +
 +
 +===== Etude d'un cas : la gestion des "trou" =====
 +
 +Condition: sauvegarde sur une partition btrfs avec un rsnapshot configuré avec link_dest qui permet de dire à rsync de créer lui meme les liens dur. La sauvegarde s'effectue tous les soir sur un poste de travail. Quand ce poste de travail est éteint, je me retrouve avec un répertoire de backup vide. Normalement, le lendemain, toutes les données devrait se retélécharger.
 +
 +Et ben non, dans la dernière version de rsnapshot, celui-ci vérifie si le répertoire donné dans link_dest est vide, si c'est le cas, il va chercher plus loin
 +
 +
 +===== Utiliser les snapshots de btrfs =====
 +
 +Inspiré du tuto http://it.werther-web.de/2011/10/23/migrate-rsnapshot-based-backup-to-btrfs-snapshots/
 +
 +Le tuto ci-dessus part d'un disque de backup en ext4 qu'il convertit ensuite en btrfs, donc lisez le si vous êtes dans ce cas.\\
 +Ici on fait déjà nos backups sur une partition btrfs, on va modifier les appels aux commandes ''cp'' et ''rm'' en les remplaçant par ''btrfs subvolume snapshot'' et ''btrfs subvolume delete''
 +L'avantage est la rapidité de la création d'un snapshot par rapport à la création de liens physique et aussi que le snapshot conserve toutes les meta-données des fichiers contrairement aux liens physiques.
 +
 +Si vous partez de rien, You must create hourly.0 as a BTRFS subvolume from the outset, otherwise it will be created as a directory and propogate itself. You lose the advantage of BTRFS.
 +  # btrfs subvolume create daily.0
 +  # btrfs subvolume create monthly.0
 +  # rsnapshot -c /etc/rsnapshot.conf daily
 +==== Script de gestion des snapshots ====
 +
 +Script **rsnapshot_plug_cp_btrfs** qui remplacera la commande **cp**
 +<file bash rsnapshot_plug_cp_btrfs>
 +#!/bin/bash
 + 
 +# Arg 1: -al
 +# Arg 2: /testbtrfs/backups/hourly.0
 +# Arg 3: /testbtrfs/backups/hourly.1
 + 
 +/sbin/btrfs subvolume snapshot $2 $3
 +</file>
 +
 +Script **rsnapshot_plug_rm_btrfs** qui remplacera la commande **rm**
 +<file bash rsnapshot_plug_rm_btrfs>
 +#!/bin/bash
 + 
 +# Arg 1: -rf
 +# Arg 2: /testbtrfs/backups/hourly.4/
 + 
 +# echo 1: $1  2: $@
 + 
 +# Essaie de supprimer le répertoire donné avec la commande btrfs subvolume delete en premier
 +# Si la commande échoue, on supprime le répertoire avec la commande rm
 +if [  "$1" = "-rf"  -a  "$3" = ""  ]; then
 +        # "on essaie de supprimer avec btrfs"
 +        /sbin/btrfs subvolume delete $2
 +        error=$?
 +        if [ $error -eq 13 ]; then
 +                # EC 13 => Le répertoire spécifié n'est pas un sous volume
 +                rm $@
 +        elif [ $error -ne 0 ]; then
 +                echo Erreur en supprimant avec btrfs $?
 +        fi
 +else
 +        rm $@
 +fi
 +</file>
 +
 +Copier ces fichiers ou vous le souhaitez et rendez les exécutables avec **chmod 755**
 +
 +==== Migration ====
 +
 +Maintenant il faut migrer nos répertoires de sauvegarde en sous volume btrfs. Un script plus poussé est fourni dans le tuto en lien au début de ce chapitre. Ici nous le prenons le cas de backup uniquement journalier (daily)
 +
 +D'abord on créer un répertoire **old** pour y stocker tous nos backup daily
 +  mkdir old
 +  mv daily.* old
 +
 +Maintenant nous allons créer un sous volume du plus vieux des backups et y copier son contenu
 +  btrfs subvolume create daily.29
 +  rsync -avi --numeric-ids old/daily.29/ daily.29/
 +
 +Ensuite nous allons créer un snapshot de ce sous volume et synchroniser celui avec le backup suivant et remonter ainsi jusqu'au dernier backup le plus récent.
 +<code bash>
 +btrfs subvolume snapshot daily.29 daily.28
 +rsync -avi --delete --numeric-ids old/daily.28/ daily.28/
 +
 +btrfs subvolume snapshot daily.28 daily.27
 +rsync -avi --delete --numeric-ids old/daily.27/ daily.27/
 +
 +...
 +
 +btrfs subvolume snapshot daily.1 daily.0
 +rsync -avi --delete --numeric-ids old/daily.0/ daily.0/
 +</code>
 +
 +On doit aussi pouvoir faire un petit script avec une boucle
 +<code bash>
 +for (( c=29; c>0; c-- ))
 +do
 +  btrfs subvolume snapshot daily.$c daily.$(($c - 1))
 +  rsync -avi --delete --numeric-ids old/daily.$(($c - 1))/ daily.$(($c - 1))/
 +done
 +</code>
 +
 +On supprime ensuite les vieux backups
 +  rm -fr old
 +
 +==== Configuration ====
 +
 +Maintenant il faut modifier votre fichier de config **rsnapshot.conf**\\
 +Je ne sais pas si l'option suivante est nécessaire, mais dans le doute
 +  no_create_root  1
 +
 +Maintenant nos 2 scripts. Adapter suivant le chemin ou vous avez placé vos scripts
 +  cmd_cp    /bin/rsnapshot_plug_cp_btfrs
 +  cmd_rm    /bin/rsnapshot_plug_rm_btfrs
 +
 +A tester aussi
 +  one_fs          1
 +
 +
linux/rsnapshot.1386232703.txt.gz · Dernière modification: 05-12-2013 09:38 de edmc73