PREAMBULE :
Si vous, ou un de vos agents, êtes capturés en mission, le département d'état nierait...
Heu non, ce n'est pas ça. Je recommence
Ces manipulations ne sont pas triviales, vous les faites donc à vos risques et périls. Si ça plante prenez-vous en qu'à vous-même !!
De suite ça met dans l'ambiance non ? 😉
Ce que je veux dire par là c'est qu'il vous faut comprendre ce que vous faites avant de le réaliser, qu'il est recommandé de faire d'abord des tests avec des dossiers artificiellement créés pour l'occasion, avant de lancer la sauvegarde générale.
Allez hop, c'est parti !!
SAUVEGARDER SON "HOME" AVEC RSYNC
Inutile de revenir sur l'importance de faire des sauvegardes régulières de ses données.
C'est en général au moment d'un crash que l'on béni le jour o๠l'on à mis en place ses sauvegardes... Ou au contraire que l'on se maudit de ne pas avoir pris le temps d'en faire.
Voici donc un petit tutoriel pour vous éviter de vous auto-traiter de toutes les injures possibles si un jour, malheureusement, vous crashez votre disque dur.
J'ai testé pas mal de solutions de sauvegardes avant de m'arrêter sur celle qui fait l'objet de ce tuto. Je ne vais pas m'attarder sur les raisons qui m'ont fait écarter tel ou tel programme. Certaines raisons étaient purement pratiques, d'autres totalement subjectives.
Au final mon choix s'est porté sur le programme rsync. Il fonctionne en ligne de commande (il y a une interface graphique qui existe, mais son utilisation ne m'a pas convaincu).
Je ne prétend pas que rsync soit la solution idéale, je n'ai pas assez de compétences pour ça. Par contre rsync convient tout à fait à ce que je voulais obtenir : Une sauvegarde intégrale de mon "Home", que je puisse lancer lorsque je le désire.
Ce tuto détaillera donc toutes les étapes pour,au final, avoir une entrée dans le menu "Applications" sur laquelle il suffira de cliquer pour lancer sa sauvegarde. Elle est pas belle la vie ? 😉
Avant de commencer voici quelques infos sur ce programme, en direct de Wikipédia :
rsync est un programme très similaire à rcp, mais possède bien plus d'options et utilise un protocole de mise à jour à distance plus efficaces afin d'accélérer significativement le transfert de fichiers lorsque le fichier de destination existe déjà .
Le protocole de mise à jour à distance rsync lui permet de ne transférer que la différence entre deux jeux de fichiers à travers le réseau, en utilisant un algorithme de recherche de somme de contrà´le.
En clair cela signifie que rsync va transférer de la "source" vers la "destination" tous les fichiers lors de la première sauvegarde (donc cela prendra un certain temps en fonction du volume de vos données).
Ensuite il ne sauvegardera sur la "destination" que les fichiers qui auront été modifiés sur la "source". Il éliminera également les fichiers sur "destination" qui ne seraient plus présents sur la "source".
Tous les fichiers seront copiés en conservant leurs permissions respectives.
Au final, après chaque sauvegarde, on retrouvera théoriquement une copie conforme de son source.
Quelques infos sur ma config, puisque c'est avec elle que j'ai fait les tests. J'ai 3 disques durs:
disque dur hda : 1 partition windows, 1 partition pour Ubuntu, 1 partition swap
Disque dur hdd : 1 partition home
Disque dur hdC : 1 partition pour la sauvegarde
1ERE à‰TAPE : LA LIGNE DE COMMANDE à€ UTILISER (ne nécessite pas de droits root)
rsync -rltgoDv --del --ignore-errors --force /home/soupaloignon/ /mnt/SAV/
rsync appelle le programme rsync
-r parcours le dossier indiqué et tous ses sous-dossiers
-l copie les liens symboliques comme liens symboliques
-t préserve les dates
-g préserve le groupe
-o mettre le propriétaire du fichier de destination identique à celui du fichier source
-D préserve les périphériques
-v plus loquace
--del permet de supprimer les fichiers sur "destination" qui n'existent plus sur "source"
--ignore-errors efface même s'il y a eu des erreurs E/S
--force force la suppression de répertoires même non-vides
/home/soupaloignon/ répertoire source
/mnt/SAV/ répertoire destination
Par rapport à ma config cette ligne de commande va donc transférer le contenu de "soupaloignon" (qui est sur un disque dur dédié) vers le disque dur de destination que j'ai monté dans /mnt avec comme non "SAV".
Remarque : Si vous n'avez qu'un seul disque dur à priori il faut que le répertoire de destination ne soit pas dans le "home", sinon cela poserait des problèmes (pas testé mais cela parait logique).
A vous d'adapter les chemins des "source" et "destination" en fonction de votre configuration
Il existe un grand nombre d'options que l'on peut passer dans rsync. A vous de choisir celles qui vous conviennent le mieux, en fonction de ce que vous voulez faire.
Pour avoir la liste de ces options, un coup de "man rsync" en console.
Allez, je vais être gentil, une traduction du "man rsync" en français ça vous dit ? 😉
http://man.developpez.com/man1/rsync.1.php#L22
Un peu long pour cette 1ere étape, mais j'ai préféré bien détailler ce qui se passait.
Pour la réalisation c'est beaucoup plus rapide par contre, un simple copier/coller de la ligne de commande dans la console (après avoir modifié vos chemins d'accès).
Maintenant c'est bien sympa, mais retaper cette ligne à chaque sauvegarde, cela risque d'être un peu lourd.
Ca tombe bien, c'est le but de la 2ème étape 😉
2EME à‰TAPE : CRà‰ATION D'UN SCRIPT
Ce script va permettre de lancer la sauvegarde d'un double clic.
Créer un fichier o๠vous voulez, copier/coller le contenu ci-dessous, enregistrer le avec un nom du genre «sauvegarde-home.sh».
Une fois que c'est fait donner des droits d'exécution au propriétaire du fichier (soit en console, soit par un clic droit sur le fichier/propriétés/permissions)
L'option «read» permet de garder la console ouverte une fois que la sauvegarde est terminée. Toujours utile si on veut voir ce qui s'est passé.
#!/bin/bash
rsync -rltgoDv --del --ignore-errors --force /home/soupaloignon/ /mnt/SAV/
read
Et voilà , d'un simple double-clic (bon, elle est facile celle-là , mais j'ai pas pu m'en empêcher 😉) vous avez réalisé votre sauvegarde.
Ok, c'est bien joli, mais il y a une fenêtre qui s'affiche, il faut valider par «Lancer dans un terminal», il n'y aurait pas quelque chose de plus esthétique ?
Et bien c'est justement le but de cette 3ème étape, ça tombe bien non ?
3àˆME à‰TAPE : CRà‰ER UNE ENTRà‰E DANS LE MENU «APPLICATIONS» :
Ranger votre fichier «sauvegarde-home.sh» à un endroit quelconque de votre disque dur (Je l'ai mis dans un dossier «scripts» de mon «home»).
Clic droit sur le logo d'Ubuntu, à gauche du menu «Applications» / à‰diter les menus.
Maintenant à vous de choisir l'endroit o๠vous voulez le mettre. Soit dans un dossier déjà existant, soit en créant un nouveau menu (J'ai créé un menu «Sauvegarde», dans lequel j'ai rajouté une entrée «Sauvegarde home».
Menu Fichier/Nouvelle entrée.
Donner un nom significatif, un commentaire si vous le désirez. Et maintenant le plus important, dans le champ «Commande» entrez le chemin complet vers votre fichier (Dans mon cas cela donne «/home/soupaloignon/03\ outils/00scripts/sav-home.sh»).
Important : Si un ou plusieurs de vos noms de dossiers comportent des espaces, il faut mettre un «\ » devant l'espace.
Valider l'option « Exécuter dans un terminal ».
Mettre une icà´ne pour que cela fasse beau 😉
Cliquer sur « Fermer ».
Et voilà , direction menu Application maintenant. C'est pas mignon ça ?
4EME à‰TAPE : SE RESSERVIR DE LA SAUVEGARDE EN TANT QUE HOME
Dans ma configuration si j'ai un crash de mon disque dur qui contient mon home il suffirait, à priori, de remplacer le disque dur du home par celui de la sauvegarde, de faire certainement quelques manipulations au niveau du fstab pour que tout reparte. Je mettrai à jour le tuto dès que j'aurai testé.
Dans le cas d'un configuration avec un seul disque dur, tout dépend du crash. Si c'est juste des données du home qui sont corrompues il suffit sans doute d'aller chercher dans la sauvegarde les fichiers en questions. Si c'est le disque dur qui est physiquement atteint, le problème est différent vu que la sauvegarde se trouve sur ce même disque dur.
Comme quoi avoir un home physiquement à part du disque dur abritant le système peut être intéressant.
21/09/2007
J'ai eu un crash physique de mon home il y a quelques temps. Plutot que d'intervertir les disques comme j'en parlais plus haut, j'en ai acheté un neuf.
J'ai refait une install d'Ubuntu compléte, en indiquant le HD neuf comme home. A la fin de l'install j'ai repris la ligne de commande de rsync, mais en inversant source et destination.
Comme sur des roulettes 😉
REMARQUES DIVERSES, EN VRAC ET DANS LE DESORDRE
21/09/2007
Une petite amélioration pour le tuto. Plus une coquetterie qu'une amélioration d'ailleurs, mais bon, cela intéressera peut être quelqu'un.
Pour certaine raisons je lance la commande de sauvegarde à la main, via un lanceur dans le menu applications. Je ne lance les sauvegardes que lorsque j'ai fait d'importantes modifs dans mes fichiers, donc il peut s'écouler parfois plus d'une semaine entre 2 sauvegardes.
J'avais envie de connaitre la date de la dernière sauvegarde.
J'ai donc rajouté une ligne de code au script qui permet de rentrer dans un fichier texte
existant ("sav-home-log" pour moi)la date et l'heure de la dernière sauvegarde:
echo "DERNIERE SAUVEGARDE LE $(date +%d-%m-%y\ à \ %H\ heures-%M\ minutes-%S\ secondes)" >> /home/soupaloignon/03\ outils/00scripts/sav-home-log
Problème de design, au bout d'un moment on a un nombre X de ligne avec "DERNIERE SAUVEGARDE LE" + date et heure.
La solution avec
sed -i 's/DERNIERE SAUVEGARDE LE/Cette ancienne sauvegarde date du/g' /home/soupaloignon/03\ outils/00scripts/sav-home-log
qui va donc chercher la chaine "DERNIERE SAUVEGARDE LE" et la remplacer par "Cette ancienne sauvegarde date du".
Le script complet va donc être :
#!/bin/bash
sed -i 's/DERNIERE SAUVEGARDE LE/Cette ancienne sauvegarde date du/g' /home/soupaloignon/03\ outils/00scripts/sav-home-log
echo "DERNIERE SAUVEGARDE LE $(date +%d-%m-%y\ à \ %H\ heures-%M\ minutes-%S\ secondes)" >> /home/soupaloignon/03\ outils/00scripts/sav-home-log
read
rsync -rltgoDv --del --ignore-errors --force /home/soupaloignon/ /mnt/SAV/home/
=================================
Un grand merci à Asher (bien connu sur ce forum pour ses contributions) pour les infos qu'il m'a donné sur les scripts.
http://asher256.tuxfamily.org/
Un grand merci aux auteurs des pages que j'ai consulté sur le net traitant de rsync.
rsync permet aussi de faire des sauvegardes vers une machine distante via ssh. Il est également possible de lui donner des fichiers/dossiers à exclure de la sauvegarde. Cela se passe via la fonction –exclude, mais là je n'ai pas réussi à le faire fonctionner. Si vous avez des infos la dessus je suis preneur.
D'une manière générale si vous avez des informations qui pourraient utilement compléter ce tuto, laissez les en réponses. Je modifierai le tuto en conséquence.
Vous pouvez faire ce que vous voulez de ce tuto, le reproduire en totalité ou en partie, le modifier, l'accrocher au mur de votre salon.
La seule chose que je vous demande c'est de citer la source : www.soupaloignon.net
Mise à jour le 10/12/2006 (4ème partie)
Mise à jour le 21/09/2007 (REMARQUES DIVERSES, EN VRAC ET DANS LE DESORDRE)
(4EME à‰TAPE : SE RESSERVIR DE LA SAUVEGARDE EN TANT QUE HOME)
Mise à jour le 25/09/2007 [HOWTO] Sauvegarder son home sur un serveur grà¢ce à rsync et SSH
http://forum.ubuntu-fr.org/viewtopic.php?id=105125
Mise à jour le 29/03/2008 Un superbe tutorial qui regroupe pas mal d'informations qui sont dans ce fil
http://doc.ubuntu-fr.org/tutoriel/sauvegarder_home_avec_rsync