Bonjour
Je cherche depuis quelques jours une solution à un changement de comportement de rsync (je n’ai rien vu dans le changelog à ce sujet)
Je me suis rendu compte que mon script de sauvegarde ne respecte plus le fichier d’exclusion que je lui donne, et ce depuis ce mercredi puisque cela fonctionnait parfaitement avant. Je l’ai vu transférer des fichiers et répertoires que j’avais bien exclus jusque là
Là je suis arrivé au bout de mes idées pour traquer ce bug
Voici l’état des lieux:
- J’utilise une machine virtuelle (Debian Jessie) sur laquelle sont montés deux répertoires de serveurs locaux
- Le serveur source est monté par Samba, le serveur de destination par NFS
- J’exécute ce script fait maison (ou plutôt adapté, peut-être même de scripts trouvés ici) manuellement une fois par semaine
J’ai activé le mode verbose++ et le dry run pour mes tests
- J’ai vérifié l’encodage du fichier exclude et ses droits:
l’encodage est us-ascii cela me surprend mais j’ai la même chose sur tous mes postes clients Debian (Wheezy et Jessie). Le fichier est en 644 et appartient toujours à l’utilisateur qui exécute le script rsync - J’ai essayé avec des + puis des - devant chaque ligne de mon fichier exclude => Sans effet
- Même chose en remplaçant exclude par “–filter=merge fichier” => Sans effet
- J’ai supprimé le = après --exclude-from (lu par ici je crois) => Cela déclenche une erreur
- Je lui ai fait charger un fichier exclude qui n’existe pas => Déclenche une erreur aussi donc l’option est toujours d’actualité
- J’ai remplacé --exclude-from= par un --exclude= avec un des patterns de mon fichier => ça fonctionne j’ai bien “hiding blabla because of pattern blabla” dans le log
- J’ai enchaîné les --exclude= avec plusieurs de mes patterns => Ça ne fonctionne plus, il n’en filtre plus aucun et rien dans le log
- J’ai essayé diverses possibilités en enlevant ou ajoutant des doubles et simples quotes autour de mes variables => rien (les autres fonctionnent: $LOG par exemple)
- J’ai déplacé --exclude-from= dans ma variable au lieu de la façon dont c’est écrit dans le script ci-dessous => rien de mieux
- J’ai exécuté la même ligne de commande directement dans le shell => même comportements
[code]#!/bin/sh
RACINE="$HOME/Scripts"
DATE="$(date +"%Y-%m-%d_%H:%M:%S")“
SOURCE=”$HOME/vhs4/“
DEST=”$HOME/nas/“
OPTIONS=”-aurvvvh0n --no-g --no-p --progress --delete --delete-excluded --stats"
#EXCLUDE="–exclude=’.Trash**’ --exclude=‘Downloads’ --exclude=‘Torrents’“
EXCLUDE=”$RACINE/exclude-nas.txt"
#BACKUP="$HOME/.local/share/Trash/files"
LOG="$RACINE/logs/NewSauvegarde-$DATE.log"
mountpoint -q "$DEST"
if [ $? != “1” ]
then echo “** NAS OK " >> "$LOG"
mountpoint -q "$SOURCE"
if [ $? != “1” ]
then echo " VHS4 OK **” >> “$LOG”
echo "**************** SAUVEGARDE DEMAREE ***************** " >> "$LOG"
rsync $OPTIONS --log-file="$LOG" --exclude-from="$EXCLUDE" "$SOURCE" "$DEST"
echo "**************** SAUVEGARDE TERMINEE ***************** " >> "$LOG" ; exit
else echo "** VHS4 KO **" >> "$LOG"
fi
else echo “** NAS KO **” >> "$LOG"
fi
echo "**************** SAUVEGARDE INTERROMPUE ***************** " >> “$LOG”[/code]
exclude-nas.txt
*~
.sujournal
.snap**
.Trash**
.@__thumb**
Thumbs.db
.DS_Store
.git**
Torrents
Downloads
video/Divx/Tri
BDMV/
/prive/vm/
/albums/
/amis/
/partages/
/www/
Avez vous d’autres idées ?
merci