#!/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[*]}"