#!/bin/bash # backup.sh: Sauvegarde une liste de répertoires et fichiers, incrémentalement, # via rsync et ssh sur des machines distance, dans le home de # l'utilisateur utilisé pour la connexion ssh. ############################################################################### #arguments à modifier: #options passées à rsync rsync_opt="--archive --compress --delete --delete-excluded \ --exclude-from=/home/nicolas/rsync.xcl --relative --verbose" #liste des répertoires et fichiers à sauvegarder: sauvegarde=(/etc /home/nicolas/dev /home/nicolas/.gaim) #liste des machines qui recevront les sauvegardes #host=(user@host1 user@host2 user@host3) host=(nicolas@192.168.0.2) ############################################################################### #une petite introduction echo `date` - Début de sauvegarde vers ${#host[*]} machines: i=0 while [ $i -lt ${#host[*]} ] do echo ${host[$i]} i=$(($i+1)) done echo -e "\n" #utilisé pour nommer le dossier de backup chez les host myhostname=`uname -n` #nombre de sauvegarde accomplis avec succès success=0 #boucle pour rsync sur chaque host i=0 while [ $i -lt ${#host[*]} ] do #récupère le home de l'utilisateur home=`echo ~${host[$i]} | sed -e "s/@.*//g"` #créer le dossier de backup au cas où il n'existe pas ssh ${host[$i]} mkdir -p ${home}/backup/${myhostname} rsync_cli="rsync ${rsync_opt} -e ssh ${sauvegarde[*]} \ ${host[$i]}:${home}/backup/${myhostname}" echo [${host[$i]}] ${rsync_cli} ${rsync_cli} if [ $? -eq 0 ] ; then echo -e "\nSauvegarde effectuée vers ${host[$i]} :-)\n\n" success=$(($success+1)) else echo -e "\nLa sauvegarde vers ${host[$i]} a échouée !\n\n" fi i=$(($i+1)) done #une petite conclusion echo -e "\nTotal de sauvegarde effectuées: ${success} sur ${#host[*]}"