« Discussion:Les sauvegardes » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
mAucun résumé des modifications
Ligne 1 : Ligne 1 :
salut ! est-ce que tu comptes parler des outils spécifiques des distributions, comme celui de Mandriva par exemple ? [[Utilisateur:LeaJice|LeaJice]] 5 sep 2006 à 20:40 (CEST)
salut ! est-ce que tu comptes parler des outils spécifiques des distributions, comme celui de Mandriva par exemple ? [[Utilisateur:LeaJice|LeaJice]] 5 sep 2006 à 20:40 (CEST)


re. Tu pourrais ajouter dans ton § rsync un truc sur les sauvegardes incrémentales. Je m'explique. Je fais un backup régulier sur un serveur sur le net. Dans la crontab de la machine à sauvegarder, vers 22h00, j'ai un rsync bien configuré (je te mettrai le script ici quand j'aurai accès à ma machine perso), qui fait un backup dans le répertoire <code>current</code> ; à la fin, il copie un fichier <code>backup_done</code> à la racine de mon compte sur le serveur, afin de dire au serveur que le backup a bien été fait.<br>
re. Tu pourrais ajouter dans ton § rsync un truc sur les ''sauvegardes incrémentales''. Je m'explique. Je fais un backup régulier sur un serveur sur le net. Dans la crontab de la machine à sauvegarder, vers 22h00, j'ai un rsync bien configuré (je te mettrai le script ici quand j'aurai accès à ma machine perso), qui fait un backup dans le répertoire <code>current</code> ; à la fin, il copie un fichier <code>backup_done</code> à la racine de mon compte sur le serveur, afin de dire au serveur que le backup a bien été fait.<br>
Côté serveur, j'ai ce script qui fait une rotation des backups (en cron tous les  midi) :
Côté serveur, j'ai ce script qui fait une rotation des backups (en cron tous les  midi) :
<code>#!/bin/sh
<code>#!/bin/sh
Ligne 35 : Ligne 35 :
Si le backup a été fait (présence du fichier <code>backup_done</code>, il effectue une rotation des backups.<br>
Si le backup a été fait (présence du fichier <code>backup_done</code>, il effectue une rotation des backups.<br>
En utilisant le <code>cp</code> avec les hard links, on ne copie pas réellement les fichiers, mais on crée un deuxième fichier qui pointe vers le contenu du premier (donc on peut avoir autant de hardlink qu'on veut sur le même fichier, la place disque utilisée n'est toujours que de la taille d'un seul fichier).<br>
En utilisant le <code>cp</code> avec les hard links, on ne copie pas réellement les fichiers, mais on crée un deuxième fichier qui pointe vers le contenu du premier (donc on peut avoir autant de hardlink qu'on veut sur le même fichier, la place disque utilisée n'est toujours que de la taille d'un seul fichier).<br>
Rsync lorsqu'il enverra, lors de la prochaine sauvegarde, un fichier modifié, utilisera temporairement un nom différent. Ainsi, il ne va pas écraser le fichier hardlinké. A la fin de la copie du fichier, Rsync renomme le fichier temporaire vers son nom normal. A ce moment là, on a sur le serveur 2 versions du même fichier : la version courante qui vient d'être sauvegardée dans <code>~/backup/current/repertoire/fichier</code> et la version précédente qui a été copiée par le script ci-dessus dans <code>~/backup/'(la date du dernier backup)'/repertoire/fichier</code>.<br>
Rsync lorsqu'il enverra, lors de la prochaine sauvegarde, un fichier modifié, utilisera un nom différent temporaire, avant de le renommer vers son nom normal. Ainsi, il ne va pas écraser le contenu du fichier hardlinké, car à la fin de la copie du fichier, Rsync supprime le fichier, puis renomme le fichier temporaire vers son nom normal.<br>
A ce moment là, on a sur le serveur 2 versions du même fichier : la version courante qui vient d'être sauvegardée dans <code>~/backup/current/repertoire/fichier</code> et la version précédente qui a été copiée par le script ci-dessus dans <code>~/backup/<la date du dernier backup>/repertoire/fichier</code>.
 
'''Plus d'explications''' :
* on a deux fichiers <code>current/toto</code> et <code>hier/toto</code> qui pointent vers le même contenu. Ces 2 fichiers (ou plus) on été obtenus suite au script de rotation, par la copie avec hardlinks. On a donc :
<code>current/toto --> contenu <-- hier/toto
                              \
                                '--------- avant-hier/toto
</code>
* si le fichier a été modifié, rsync va envoyer le nouveau fichier sous un nom temporaire <code>toto.tmp</code> (par exemple). On a donc :
<code>current/toto --> contenu <-- hier/toto
                              \
                                '--------- avant-hier/toto
 
current/toto.tmp --> nouveau contenu</code>
* ensuite, rsync supprime <code>current/toto</code> On obtient, par la magie des  hardlinks :
<code>                contenu <-- hier/toto
                          \
                          '--------- avant-hier/toto
 
current/toto.tmp --> nouveau contenu</code>
* enfin, <code>toto.tmp</code> est renommé en <code>toto</code> :
<code>                contenu <-- hier/toto
                          \
                          '--------- avant-hier/toto
 
current/toto --> nouveau contenu</code>
* on obtient bien 2 versions différentes, celle d'hier et d'avant-hier (le fichier n'avait alors pas changé), et celle d'aujourd'hui.
 
Ainsi j'ai toujours les backup des 8 (réglable par la variable <code>KEEP</code> ci-dessus) derniers jours disponible. Je peux retrouver les dernières versions d'un fichier en cas de problème.
Ainsi j'ai toujours les backup des 8 (réglable par la variable <code>KEEP</code> ci-dessus) derniers jours disponible. Je peux retrouver les dernières versions d'un fichier en cas de problème.
<br>
<br>
Si tu veux, tu peux reprendre ça dans ton article. [[Utilisateur:LeaJice|LeaJice]] 6 sep 2006 à 11:48 (CEST)
Si tu veux, tu peux reprendre ça dans ton article. [[Utilisateur:LeaJice|LeaJice]] 6 sep 2006 à 11:48 (CEST)

Version du 6 septembre 2006 à 12:12

salut ! est-ce que tu comptes parler des outils spécifiques des distributions, comme celui de Mandriva par exemple ? LeaJice 5 sep 2006 à 20:40 (CEST)

re. Tu pourrais ajouter dans ton § rsync un truc sur les sauvegardes incrémentales. Je m'explique. Je fais un backup régulier sur un serveur sur le net. Dans la crontab de la machine à sauvegarder, vers 22h00, j'ai un rsync bien configuré (je te mettrai le script ici quand j'aurai accès à ma machine perso), qui fait un backup dans le répertoire current ; à la fin, il copie un fichier backup_done à la racine de mon compte sur le serveur, afin de dire au serveur que le backup a bien été fait.
Côté serveur, j'ai ce script qui fait une rotation des backups (en cron tous les midi) : #!/bin/sh

if [ -f ~/backup_done ]; then

       KEEP=8
       DIR=~/backup
       # arborescence :
       # ~/backup/2006-04-03
       # ~/backup/2006-04-04
       # ~/backup/2006-04-05
       # ~/backup/current
       # calcule date du jour
       DATE=`date --date=yesterday "+%Y-%m-%d"`
       # crée le répertoire pour les backups du jour
       mkdir $DIR/$DATE
       # supprime les vieux directories
       ls -d $DIR/2* | sort | head --lines=-$KEEP | xargs rm -rf
       # copie (hard links) les données
       cp -al $DIR/current/* $DIR/$DATE
       # supprime le fichier flag
       rm ~/backup_done
       # on fait le rsync ensuite

fi

Si le backup a été fait (présence du fichier backup_done, il effectue une rotation des backups.
En utilisant le cp avec les hard links, on ne copie pas réellement les fichiers, mais on crée un deuxième fichier qui pointe vers le contenu du premier (donc on peut avoir autant de hardlink qu'on veut sur le même fichier, la place disque utilisée n'est toujours que de la taille d'un seul fichier).
Rsync lorsqu'il enverra, lors de la prochaine sauvegarde, un fichier modifié, utilisera un nom différent temporaire, avant de le renommer vers son nom normal. Ainsi, il ne va pas écraser le contenu du fichier hardlinké, car à la fin de la copie du fichier, Rsync supprime le fichier, puis renomme le fichier temporaire vers son nom normal.
A ce moment là, on a sur le serveur 2 versions du même fichier : la version courante qui vient d'être sauvegardée dans ~/backup/current/repertoire/fichier et la version précédente qui a été copiée par le script ci-dessus dans ~/backup/<la date du dernier backup>/repertoire/fichier.

Plus d'explications :

  • on a deux fichiers current/toto et hier/toto qui pointent vers le même contenu. Ces 2 fichiers (ou plus) on été obtenus suite au script de rotation, par la copie avec hardlinks. On a donc :

current/toto --> contenu <-- hier/toto

                              \
                               '--------- avant-hier/toto

  • si le fichier a été modifié, rsync va envoyer le nouveau fichier sous un nom temporaire toto.tmp (par exemple). On a donc :

current/toto --> contenu <-- hier/toto

                              \
                               '--------- avant-hier/toto

current/toto.tmp --> nouveau contenu

  • ensuite, rsync supprime current/toto On obtient, par la magie des hardlinks :

contenu <-- hier/toto

                         \
                          '--------- avant-hier/toto

current/toto.tmp --> nouveau contenu

  • enfin, toto.tmp est renommé en toto :

contenu <-- hier/toto

                         \
                          '--------- avant-hier/toto

current/toto --> nouveau contenu

  • on obtient bien 2 versions différentes, celle d'hier et d'avant-hier (le fichier n'avait alors pas changé), et celle d'aujourd'hui.

Ainsi j'ai toujours les backup des 8 (réglable par la variable KEEP ci-dessus) derniers jours disponible. Je peux retrouver les dernières versions d'un fichier en cas de problème.
Si tu veux, tu peux reprendre ça dans ton article. LeaJice 6 sep 2006 à 11:48 (CEST)