All pastes #365211 Raw Edit

Mine

public text v1 · immutable
#365211 ·published 2007-02-20 19:53 UTC
rendered paste body
#!/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[*]}"