• 1
    08/08

clavicogyre ver 1.5

Je publie le petit script de backup maison que j’utilise depuis plusieurs années. Simple, à base de rsync au travers d’SSH, il propose un petit menu pour ne sauvegarder que certaines partie de votre home (Images, Documents, Musique, etc), et possède l’option –delete de rsync facultative :

#!/bin/bash
 
#======================================================================
# CLAVICOGYRE - Script de backup
#======================================================================
# by fabien a. [fabien@feub.net]
# http://feub.net/
#======================================================================
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, 
#  - write to the Free Software
#		Foundation, Inc.,
#		51 Franklin Street,
#		Fifth Floor,
#		Boston, MA  02110-1301
#		USA.
#		- See http://www.gnu.org/licenses/gpl.html
#======================================================================
 
# Numero de version
VERSION="ver 1.5.02 (01/08/2008)"
 
# Chemin vers le serveur
SSHPATH="utilisateur@serveur:"
 
# Chemins
PHOTOS_SOURCE="$HOME/lightroom/"
PHOTOS_CIBLE="$SSHPATH/home/fabien/Images/Photos"
PICTURES_SOURCE="$HOME/Pictures/"
PICTURES_CIBLE="$SSHPATH/home/fabien/Images"
DOCS_SOURCE="$HOME/Documents/"
DOCS_CIBLE="$SSHPATH/home/fabien/Documents"
MUSIC_SOURCE="$HOME/Music/iTunes/iTunes Music/"
MUSIC_CIBLE="$SSHPATH/backup/Musique"
WWW_SOURCE="$HOME/www/"
WWW_CIBLE="$SSHPATH/home/fabien/www"
DEV_SOURCE="$HOME/Dev/"
DEV_CIBLE="$SSHPATH/home/fabien/Dev"
BIN_SOURCE="$HOME/bin/"
BIN_CIBLE="$SSHPATH/home/fabien/Backup/bin"
RESSOURCES_SOURCE="$HOME/Resources/"
RESSOURCES_CIBLE="$SSHPATH/home/fabien/Resources"
 
# Date d'execution du script
JOUR=$(date+%d) 	## + %d permet d'extraire le jour
MOIS=$(date+%m)	## +%m permet d'extraire le mois
ANNEE=$(date+%Y) 	## +%y permet d'extraire l'annee
HEURE=$(date+%H)	## +%H permet d'extraire l'heure
MINUTES=$(date+%M)	## +%M permet d'extraire les minutes
 
# Envoi du log par email
#MAIL_DEST="adresse@email.net"
#MAIL_SUJET="[Backup] du $ANNEE-$MOIS-$JOUR a $HEUR:$MINUTES"
 
# Rapport
RAPPORT="$HOME/Desktop/$ANNEE$MOIS$JOUR-clavicogyre-backup.log"
 
# Les options sont :
# v : verbose
# r : rursif
# u : update seulement
# p : prerve les permissions
# a : copie en tant qu'archive
# t : prerve la date
# --delete : supprime ce qui a ete supprime (copie stricte)
 
# Fonctions
backup() {
 
	SOURCE="$1"
	CIBLE="$2"
 
	echo "Backup $SOURCE ...."
	echo "" >> $RAPPORT
	echo "----------------------------------" >> $RAPPORT
	echo Backup du dossier ${1} du $JOUR'/'$MOIS \
              a $HEURE'h'$MINUTES >> $RAPPORT
	echo "----------------------------------" >> $RAPPORT
 
	# Si option delete
	if [ "$3" = "DEL" ]
	then
		echo "L'option --delete est activee, etes-vous sur? (O/[n])"
		read ACTDEL
 
		if [ "$ACTDEL" = "O" ]
		then
			OPTDEL="--delete"
			echo "Option --delete ON" >> $RAPPORT
		else
			OPTDEL=""
			echo "Option --delete OFF" >> $RAPPORT
		fi
	else
		OPTDEL=""
		echo "option --delete OFF" >> $RAPPORT
	fi	
 
	# rsync
	rsync -vrupatz --exclude-from=$HOME/bin/rsync_exclude.txt \
               $OPTDEL -e ssh "${SOURCE}" "${CIBLE}" | tee -a $RAPPORT 2>&1
 
	echo "" >> $RAPPORT
 
	echo "Fin du backup."
	echo "Un fichier de log se trouve ici : "
	echo $RAPPORT
	echo "----------------------------------"
}
 
# On efface l'ecran
clear
 
echo "CLAVICOGYRE : SCRIPT DE BACKUP - $VERSION"
 
# Demande du repertoire a sauvegarder
echo "----------------------------------"
echo "Repertoire a sauvegarder : "
echo "=== 1) Photos (Lightroom)"
echo "=== 2) Pictures"
echo "=== 3) Documents"
echo "=== 4) Music"
echo "=== 5) www"
echo "=== 6) Dev"
echo "=== 7) bin"
echo "=== 8) Resources"
echo "----------------------------------------------"
echo -n "L'ajout de 'strict' ajoutera l'option --delete de rsync "
echo -n "et effectuera ainsi une copie conforme."
echo -n "ATTENTION : a utiliser avec parcimonie, les fichiers"
echo "supprimes seront supprimes sur la sauvergarde egalement."
echo "Exemple : 2 strict"
echo "fera une copie stricte du dossier Documents."
echo "----------------------------------"
echo -n "---> choix : "
read REP
tput clear
 
case "$REP" in
"1" )
	backup $PHOTOS_SOURCE $PHOTOS_CIBLE;;
"1 strict" )
	backup $PHOTOS_SOURCE $PHOTOS_CIBLE "DEL";;
"2" )
	backup $PICTURES_SOURCE $PICTURES_CIBLE;;
"2 strict" )
	backup $PICTURES_SOURCE $PICTURES_CIBLE "DEL";;
"3" )
	backup $DOCS_SOURCE $DOCS_CIBLE;;
"3 strict" )
	backup $DOCS_SOURCE $DOCS_CIBLE "DEL";;
"4" )
	backup $MUSIC_SOURCE $MUSIC_CIBLE;;
"4 strict" )
	backup $MUSIC_SOURCE $MUSIC_CIBLE "DEL";;
"5" )
	backup $WWW_SOURCE $WWW_CIBLE;;
"5 strict" )
	backup $WWW_SOURCE $WWW_CIBLE "DEL";;
"6" )
	backup $DEV_SOURCE $DEV_CIBLE;;
"6 strict" )
	backup $DEV_SOURCE $DEV_CIBLE "DEL";;
"7" )
	backup $BIN_SOURCE $BIN_CIBLE;;
"7 strict" )
	backup $BIN_SOURCE $BIN_CIBLE "DEL";;
"8" )
	backup $RESSOURCES_SOURCE $RESSOURCES_CIBLE;;
"8 strict" )
	backup $RESSOURCES_SOURCE $RESSOURCES_CIBLE "DEL";;
* )
	echo "Aucun choix valide. Termine.";;
esac
 
echo "Fin du script."

Télécharger clavicogyre.sh

Note : les anti-slash \ ne sont pas à taper, ils indiquent que j’ai coupé les lignes pour que ça ne dépasse pas du cadre. Il s’agit d’une seule et même ligne.

Note 2 : Oui clavicogyre est une arme de Goldorak ;}

Mots-clefs : , ,

Vous pouvez laisser un commentaire, ou faire un trackback depuis votre propre site.

4 commentaires

  • mika dit :

    bonjour a tous.
    Merci pour ce scripte.
    j’ai encore un probleme.
    j’ai modifié le chemin du serveur. J’utilise le scripte sur ma machine et la sauvegarde sur un disque externe.

    lorsque je lance le script dans le terminal j’ai un message Permission denied.

    même si je suis logué en root

    peux tu me guider?

    merci d’avance

  • mika dit :

    Je m’auto répond :-)
    j’ai finin par trouvé j’ai fais un chmod u+x
    pour rendre mon fichier exécutable.

    A bientot

  • fabien dit :

    Hehe, oui ;}

  • [...] y a de cela un petit moment j’avais publié le script de sauvegarde que j’utilisais. Celui-ci propose un menu afin [...]

Laisser une réponse

  Me prévenir lorsqu'un nouveau commentaire est ajouté

NOTE : Le bon usage de la grammaire et de l'orthographe est fortement encouragé. En particulier, le langage SMS est à éviter absolument, il pourra être censuré.

eXTReMe Tracker