Lancer rsync sur un montage nfs

Salut,

Oui, je sais, mais par modestie, je pensais que ça ne serait pas opportun.
Mais si tu m’y encourage, je le fais.
J’aimerais bien aussi créer une rubrique sur le Wiki à ce sujet. Des infos sur les langages, quelques pages sur de l’aide à la programmation, des scripts…
Thuban à déjà fait une page sur son Yaptitude.
Moi je suis très très très nul et incapable de faire le tri des scripts qui sont sur le forum…

ACtuellement je ne peux pas t’aider (je suis en vacances :stuck_out_tongue: ), dès mon retour on pourras organiser ça (si vous ne l’avez pas fait avant).

Après avoir écris ton post je me suis posé la question de la licence des scripts postés. Personnellement je ne l’ai pas noté avant ils sont en licences “Rien à battre” (sauf celui qui est déjà en GPL), je modifierais mes postes en conséquences.

Bon sang, mais cet excellent ça en local familiale et petites entreprises ! :041

Marchi :slight_smile:
Par contre au lieu de faire journalier pourquoi ne pas intégrer l’incrémentale ?
Genre :

bdate=$(date +%d%m%y) rsync -abz --backup-dir=$bdate --delete

Salut,
Je l’ai fais mais j’avais oublié de donner un retour.

Donc 7 sous-répertoires dans /mnt/sidlol/sos/, un par jour de la semaine.

Bonjour et merci pour ce script,

J’y ai fais quelques modifications si ca en interesse certain et surtout s’il y a des linuxiens chevronnés qui pourrait le relire pour erreurs et me filer un coup de main pour envoyer un mail en cas d’echec.

Voici le script :

[code]#!/bin/bash

sauvegarde différentielle journalière

ATTENTION : placer un fichier “.test” a la racine du montage NFS

In /etc/fstab : 192.168.1.102:/volume1/test /mnt/test/ nfs user,noauto 0 0

###CRON : 0 5 * * 1-5 /home/scripts/backup.bash > /home/scripts/logs/backup.log 2>&1 pour lancer le script à 05h00 du lundi au vendredi.

internationalisation

. /etc/default/locale
export LANG

Variables

IPNAS=“192.168.1.102” # IP server NAS
DIRNAS=/volume1/test # REPERTOIRE PARTAGE DU SERVEUR NAS
DIR2NAS="/mnt/test" # répertoire local vers lequel sera monté le partage réseau
#RSYNC_OPTIONS="-acRz --delete-during --delete-excluded --ignore-errors --force --numeric-ids --partial --stats --timeout=900"
#RSYNC_OPTIONS="-rltgoDvh --ignore-errors --force --stats --progress"
RSYNC_OPTIONS="-var --stats --delete-after"

Directories to backup

DIR2BCKP="()" # ne pas modifier !
DIR2BCKP[0]="/home/prive/“
DIR2BCKP[1]=”/home/public/"

Directories to create for backup

DIR2CREATE="()" # ne pas modifier !
DIR2CREATE[0]="prive"
DIR2CREATE[1]=“public”

Exclusions

EXCLUDE="()" # ne pas modifier !
EXCLUDE[0]="/home/scripts/exclude_prive.txt" #liste des fichiers et repertoires a exclure
EXCLUDE[1]=""

Temps d’execution du script

START=$(date +%s)

Journalisation

LOG="/home/scripts/logs/execution_$(date +%A)-result.log"
LOG_RSYNC="/home/scripts/logs/rsync_$(date +%A)-result.log"
#rm /home/scripts/logs/rsync_$(date +%A)-result.log

system commands used by this script

declare -i count=${#DIR2BCKP[@]}
declare -i i=0

Temps d’execution du script

START=$(date +%s)

Debut du script pour les logs

echo “##### Debut de la copie en date du $(date) #####” >> $LOG

if [ “$(ping -c 3 $IPNAS | grep ‘0 received’)” ]
then
echo “Server NAS not online !” >> $LOG
exit 1
else
if ! df | grep -q '$IPNAS:$DIRNAS’
then
mount -t nfs $IPNAS:$DIRNAS $DIR2NAS
if [ $? -eq 0 ]
then {
echo “Server NAS mounted successfully.” >> $LOG
}
else {
echo “Server NAS not mounted successfully !” >> $LOG
exit 1
}
fi
fi
fi

if [ -f $DIR2NAS/.test ]; then

If not exists backup directories of the day

[ -d “$DIR2NAS/$(date +%A)” ] || mkdir “$DIR2NAS/$(date +%A)”

while [ “$i” -lt “$count” ]; do
#[ -d “$DIR2NAS/${DIR2CREATE[$i]}” ] && mkdir “$DIR2NAS/${DIR2CREATE[$i]}”
# do the backup
RSYNC_RES=$(rsync $RSYNC_OPTIONS “${DIR2BCKP[$i]}” --log-file=$LOG_RSYNC --exclude-from=${EXCLUDE[$i]} “$DIR2NAS/$(date +%A)/${DIR2CREATE[$i]}”)
echo $RSYNC_RES >> $LOG
i=$(($i+1))
done

Afficher le temps d’execution

STOP=$(date +%s)
RUNTIME=expr $STOP - $START

envoi du mail (a faire!!! je sais pas comment)

#mailx vmail < $LOG ;
if ! umount ${DIR2NAS}; then
echo “An error code was returned by umount command !” >> $LOG
exit 5
else echo “Server NAS dismounted successfully.” >> $LOG
fi
else
echo “Server NAS not mounted !” >> $LOG
fi

Fin du script de log

printf “Temps d’execution : %02d:%02d:%02d\n” $((RUNTIME/3600)) $((RUNTIME/60%60)) $((RUNTIME%60)) >> $LOG
echo “##### Fin de la copie en date du $(date +”%d-%m-%Y a %H:%M") #####" >> $LOG

exit

[/code]

Merci d’avance