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/11/ssh-auto-login-or-passwordless-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.