Script Bash de sauvegarde du home sur clef USB
Par Baz le 27/07/2009 à 14:53 - Scripts Bash
Ce petit script bash utilise rsync et permet de sauvegarder très facilement le dossier /home/utilisateur vers une clé USB ou un disque dur externe.
J'ai fais ce script il y a un petit moment et je l'ai enrichi de quelques fonctions au fil du temps...
Maintenant qu'il me plaît bien et puisque qu'il me rend services, je me suis dis que j'allais le partager sur ce blog, peut être rendra t-il service ailleurs
Principe du script :
- On branche le périphérique USB.
- On clique sur le script.
- On attend le temps de la sauvegarde.
- C'est terminé, on peut enlever la clé.
Configuration du script :
- Pour le faire fonctionner il suffit de renseigner dans le script la destination du périphérique de sauvegarde. D'autres options sont disponibles mais ont des valeurs par défauts.
Comportement par défaut du script (facile à modifier) :
- Demande confirmation avant de démarrer la sauvegarde.
- Ne copie que les fichiers qui ne sont pas déjà présent sur la destination (disque externe) sauf si les fichiers de la source (votre home) sont plus récent. (option de rsync)
- Synchronisation dans un seul sens (home vers le disque externe) (option de rsync)
- Exclu les fichiers cachés, dont le nom commence par un point, pour ne sauvegarder que les documents personnels sans les fichiers de configuration. (option de rsync)
- Gestion des droits limités sur les fichiers du média externe pour éviter les erreurs dues au formatage en fat32 de la majorité des clé USB. (option de rsync)
- Propose d'afficher un log en cas d'erreur.
Capture d'écran :
Téléchargement :
Sync-home.sh (ne pas oublier de rendre le fichier exécutable)
ou en une seule ligne de commande :
wget http://wavemaker.free.fr/share/Sync-home.sh && chmod +x Sync-home.sh
Note importante :
Pour fonctionner il faut que ce premier script soit visible dans un terminal.
Pour cela on peut soit:
- L'exécuter en ligne de commande. (./Sync-home.sh)
- Double cliquer sur le fichier et choisir "lancer dans un terminal". (Comportement sous Gnome)
- Créer un lanceur et choisir l'option "Application dans un terminal". (Gnome également)
- Créer un deuxième fichier qui va demander l'ouverture du 1er script
dans un terminal. (En théorie, on peut aussi appeler ce second fichier "autorun" ou "autorun.sh" et le placer sur le média de stockage afin qu'il s'exécute dès que le média est monté).
Dans ce cas, si vous utilisez "gnome-terminal" et que vous placez vos scripts dans le dossier "nautilus-scripts" ce deuxième fichier pourra par exemple contenir :
#!/bin/bash
gnome-terminal --geometry "80x20" --hide-menubar --title="Sync-home.sh" -x \
"/home/$USER/.gnome2/nautilus-scripts/Sync-home.sh"
exit 0
Et voilà, ça sera tout pour aujourd'hui !
Je vous souhaite de bonnes sauvegardes
Commentaires
Belle coïncidence, je viens d'acheter une carte SD de 16Go pour faire un backup de mon /home sur mon Eee PC, et ton script va m'être d'une grande utilité!
Merci :-)
Bonsoir
Belle réalisation, simple et très pratique.
J'adopte pour mes Backups .....
olivier
@Chris : Ça tombe bien ! D'ailleurs moi aussi je l'utilise pour les backups de mon Eeepc.
@olivier76 : Merci ! Content que ça soit utile ;-)
Script interessant, mais je ne comprends pourquoi tu ne sauvegarde pas les fichiers cachés .*
Effectivement, je ne sauvegarde rien sur le bureau et la partition de documents est séparée. Ce qu'il fait que mon home contient uniquement les fichiers de conf.
J'ai donc modifié ton script pour que cela sauvegarde également les fichiers cachés du coup.
@Tiyab : Salut ! J'ai exclu les fichiers cachés parce qu'ils sont très nombreux et que dans mon cas je n'en ai pas l'utilité. Mais le script est facile à adapter selon ses propres besoins donc tu as bien fais ;-)
A++
Salut,
en vue d'une install de Jaunty, je fais une sauvegarde de mon home actuel et rencontre quelques problèmes à supprimer mes précédents home sauvés.
J'ai toujours procédé par simple copier-coller vers mon DD et aimerais savoir l'intérêt d'utiliser ton script ou rsync...
Merci d'avance
a+ et longue vie à wavemaker
Salut Matoo,
L'intérêt c'est que Rsync permet de gagner du temps par rapport à un simple copier/coller.
- Rsync regarde la date de modification des fichiers et ne sauvegarde que si celui présent dans le home est plus récent que celui présent sur la clé.
- Rsync efface les fichiers "anciens" qui sont toujours sur la clé USB mais plus dans le home. (mais ça va pas effacer le contenu de ta clé rassures-toi...)
En gros, c'est pratique quand tu fais des sauvegardes régulières.
La première sauvegarde en utilisant le script sera aussi longue qu'un simple copier/coller mais par contre la deuxième fois ça sera bien plus rapide.
Selon les options choisies, Rsync permet aussi de synchroniser deux dossiers pour qu'il soit toujours identiques, contiennent les fichiers les plus récents, possède les même permissions, etc.
RTFM si tu veux en savoir plus :-)
++
Merci patron!
Je me flagellerais ce soir pour ne pas avoir RTFM...
A+
Ça va pour cette fois mon fils.
++
Merci beaucoup :)
8-) tiptop bien le script
j'ajouterai quelques demandes si possible car je souhaiterai indiquer plusieurs éléments à sauvegarder de manières plutôt précise (/home/; /etc/; .numfile; ....)
1.pour ce faire je pensais mettre dans un fichier dit de config ".sync-home.cfg". Mais comment écrire le code afin de lire le dit ficher ?
2.test de présence/attente du support, j'ai ajouté ce bout de code récupéré :
echo -e $BLANC && clear # Change de couleur et nettoie l'affichage
echo "#
--- #"echo "# Attente de la clé : $USB"
echo "#
--- #"while true
do
if mount|grep "$USB"; then
....
fi
sleep 5;
done
3. autre l'ajout du point 2, si je met le script en autorun sur le support qui appelle ".sync-home.sh" et que j'indique à démonter en fin de syncrho cela fonctionnera-t-il ?
Merci pour cet article :)