#1 Le 22/03/2007, à 17:52
- PurpleSkunk
[HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
Bonjour,
j'ai créé ce tuto à partir de plusieurs sources, je citerai toutes les sources à la fin.
Le but de ce HOWTO est de pouvoir sauvegarder son répertoire home (ou autre) sur une machine distante, via ssh, sans entrer aucun mot de passe, mais tout en gardant un minimum de sécurité.
Je recommande tout de même d'effectuer ces sauvegardes uniquement sur un réseau local (question de sécurité, encore une fois), mais ça fonctionne aussi via Internet.
Donc c'est parti :
[HOWTO] Sauvegarder son home sur un serveur distant grâce à rsync et ssh
1°/ La ligne de commande rsync :
rsync -Pavz -e "ssh" --delete --ignore-errors --force --filter "- lost+found" /path/source root@serveur:/path/cible
rsync ==> lance le programme rsync
-P ==> affiche une progression des éléments
-a ==> passe rsync en mode archive (identique à -rlptgoD)
-v ==> mode verbose, pour le rendre un peu plus bavard
-z ==> compresse les données durant le transfert (+ rapide, surtout via un réseau)
-e "ssh" ==> indique le shell à utiliser sur le serveur distant
--delete ==> supprime de la cible les fichiers qui n'existent plus sur la 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
--filter "- dir" ==> ignore tous les fichiers/répertoires correspondants à "dir"
/path/source ==> chemin absolu vers la source, en local
root@serveur: ==> login à utiliser et serveur à atteindre
/path/cible ==> chemin absolu vers la cible, sur le serveur distant
En adaptant cette ligne de commande à ce que vous voulez faire exactement, vous obtiendrez votre propre commande à utiliser.
2°/ Préparation ssh côté client :
Tout d'abord, il faut créer un répertoire .ssh à la racine de votre dossier home :
mkdir .ssh
Ensuite il faut lui donner les bonnes permissions :
chmod 700 .ssh
Puis on se rend dans le répertoire:
cd .ssh
Là, il faut générer la paire de clés dsa :
ssh-keygen -t dsa
Appuyez sur Entrée trois fois de suite pour finir de générer les clés.
Enfin il va vous falloir une copie du fichier id_dsa.pub pour l'utiliser sur le serveur, donc mettez-le sur une clé USB, envoyez-le par mail, ...
3°/ Préparation ssh côté serveur :
Une fois que vous avez le fichier à disposition sur le serveur, loggez-vous sur le compte que vous utiliserez pour ssh (moi j'utilise root sur mon LAN, mais c'est pas obligatoire).
Puis il faut copier le contenu du fichier id_dsa.pub :
cat /chemin/vers/le/fichier/id_dsa.pub >> $HOME/.ssh/authorized_keys
La préparation côté serveur est finie !
A ce stade, vous pouvez utiliser votre commande rsync directement, nous allons maintenant voir comment en tirer parti.
4°/ Creation d'un script :
Dans une console tapez :
gedit $HOME/homesave.sh
et mettez ceci dedans :
#!/bin/bash
rsync -Pavz -e "ssh" --delete --ignore-errors --force --filter "- lost+found" /path/source root@serveur:/path/cible
Sauvegardez, quittez.
Ensuite faites une clic-droit sur votre script fraîchement créé, et allez dans Propriétés/Permissions. Cochez la case Exécution.
Vous pouvez éventuellement créer un lanceur sur votre bureau, n'oubliez pas de choisir le type "Lancer une application dans un terminal". Si vous faites cela, ajoutez une ligne contenant "read" à votre script, cela laissera la fenêtre ouverte à la fin de la sauvegarde afin que vous puissiez vérifier le travail du script.
5°/ Automatisation grâce à un job cron :
Dans une console tapez :
crontab -e
et mettez ceci dedans :
00 03 * * * /home/user/homesave.sh
Explications :
00 03 ==> Démarre à 3h du matin (dans le format mm hh)
* * * ==> Tous les jours (dans le format jj mm jj : jour mois, mois, jour semaine) (des 1 à la place des * signifient respectivement 1 fois/mois (1er du mois), 1 fois/an (1er Janvier) et 1fois/semaine (chaque lundi)
/home/... ==> Chemin absolu vers votre script sh
Je vous invite à visiter cette page Crontab pour plus d'infos sur la manière de planifier une tâche.
Sauvegardez (CTRL+O sous nano) puis quittez (CTRL+X).
Ce job d'exemple démarrera donc automatiquement la sauvegarde tous les jours à 3h du matin, sans intervention humaine ni entrée de mot de passe grâce au couple clé privée/clé publique.
Voilà, j'espère que ce tuto vous a plu, j'utilise cette méthode chez moi et ça marche très très bien, je sauvegarde le home de mon portable perso (Ubuntu Edgy) sur mon serveur de fichiers (Gentoo) tous les jours sans rien faire c'est super pratique.
Si vous voyez des infos à rajouter ici, faites-m'en part.
PurpleSkunk
Sources :
http://forum.ubuntu-fr.org/viewtopic.php?id=82232&p=1
http://bloggerdigest.blogspot.com/2006/ … login.html
http://man.developpez.com/man1/rsync.1.php#L22
http://fr.wikipedia.org/wiki/Crontab
Merci à soupaloignon pour son super HOWTO dont je me suis inspiré pour parvenir à mes fins, en effet mon tuto est au départ fondé sur un besoin personnel de sauvegarde.
Dernière modification par PurpleSkunk (Le 22/03/2007, à 18:22)
Hors ligne
#2 Le 22/03/2007, à 18:08
- snigit
Re : [HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
gedit $HOME/cron-homesave
et mettez ceci dedans :
00 03 * * * rsync -Pavz -e "ssh" --delete --ignore-errors --force --filter "- lost+found" /path/source root@serveur:/path/cible
Pourquoi ne pas mettre directement cette ligne dans le crontab ?
avec crontab -e ?
et a quoi te sert le fichier "homesave.sh" du coup ? Tu pourrais faire "crontab -e"
et mettre "00 03 * * * homesave.sh" dedans non ?
Hors ligne
#3 Le 22/03/2007, à 18:15
- PurpleSkunk
Re : [HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
Pourquoi ne pas mettre directement cette ligne dans le crontab ?
avec crontab -e ?
Tu as tout à fait raison, je vais modifier ça.
et a quoi te sert le fichier "homesave.sh" du coup ? Tu pourrais faire "crontab -e"
et mettre "00 03 * * * homesave.sh" dedans non ?
Là aussi, tu as raison, à la base j'avais dans l'idée de séparer les deux car certains auraient pu vouloir le script, d'autres le cron job, mais utiliser le script dans le job est une excellent idée.
Merci à toi.
Hors ligne
#4 Le 23/03/2007, à 19:22
- TizeN
Re : [HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
En effet très utile, j'avai déjà fait un petit script exprès pour la même chose, mais personnellement j'ai jamais réussi à avoir la connexion sans mot de passe, alors l'automatisation tombe à l'eau ...
J'ai pas encore regardé dans les options de rsync pour donner le mot de passe en option peut-être?
Sinon j'ai mis en place l'utilisation d'une option pour sauvegarder seulement certain répertoire séparément (/home/login, /etc, /home/login/mp3, /home/login/anims, etc.) pour ne pas tout sauvegarder tout le temps, seulement le plus important, et sinon j'ai également rajouté les options "r" et "u", "r" pour faire le backup en mode récursif (entre dans tous les répertoires pour les lister), et "u", pour ne faire qu'une màj de la sauvegarde sur le serveur, c-à-d, n'envoyer que les fichiers différents de la sauvegarde sur le serveur .
Hors ligne
#5 Le 23/03/2007, à 20:05
- PurpleSkunk
Re : [HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
"r" pour faire le backup en mode récursif (entre dans tous les répertoires pour les lister),
L'option "-r" est déjà comprise dans l'option "-a" !
et "u", pour ne faire qu'une màj de la sauvegarde sur le serveur, c-à-d, n'envoyer que les fichiers différents de la sauvegarde sur le serveur .
J'ai jeté un coup d'oeil au man (ben oui, je le connais pas par coeur !) et en fait "-u" ça fait pas tout à fait ce que tu dis, ça saute les fichiers qui sont plus récents sur le serveur, même si les fichiers sont différents. Le comportement que tu décris est en fait le comportement par défaut de rsync, à savoir l'algorithme rsync incrémental.
En revanche, je suis d'accord pour dire que l'option "-r" est indispensable, qu'elle soit spécifiée ou incluse dans l'option "-a" !
Hors ligne
#6 Le 23/03/2007, à 21:12
- TizeN
Re : [HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
Ok, merci de l'info pour le "-r", je note!
Pour le "-u", en effet après nouveau regard sur le man, c'est bien le fichier le plus récent qui l'emporte avec cette option . Au final ça fait ce que je veux donc de toute façon, généralement le fichier le plus récent est le dernier modifier, donc d'un côté c'est ce qui est recherché .
Enfin ce n'est que mon avis .
Hors ligne
#7 Le 25/09/2007, à 03:03
- soupaloignon
Re : [HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
Salut PurpleSkunk,
Je viens juste de découvrir l'existence de ce fil et ton tuto. Beau travail
Je viens de mettre un lien du tuto que j'ai fait vers le tien.
A+
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#8 Le 02/01/2008, à 10:50
- desmogone
Re : [HOWTO] Sauvegarder son home sur un serveur grâce à rsync et SSH
Salut !
Je me permets de faire un petit drapal sur le sujet car après j'ai du mal à les retrouver dans les milliards de posts du forum
Desmogone, qui doit mettre une solution de sauvegarde @ home ...
Phenom II X4 940 - RAM 4Go - 9600GT - HDD Sata 500Go - ubuntu 14.04 LTS 64 bits
Portable LDLC 13" - Pentium 2020M - RAM 4G - SSD Sata 120Go - xubuntu 15.04 64 bits
MSI Wind Atom N270 - RAM 2Go - i945 - SSD Sata 80Go - ubuntu 14.04 LTS 64 bits
Hors ligne