Je voudrais exclure les répertoires "temp" et "Ubuntu One /" de la sauvegarde. Quelle est la fuite correcte de l'espace ????
RSYNCCONF="--delete --exclude=.* --exclude=temp/"
Merci d'avance!
Modifier/PS:
excludes=( ".*" temp/ "Ubuntu One/" )' 'RSYNCCONF="${excludes[@]/#/--exclude=}"
et
$RSYNC -e "$S" -avR $FROMSSH:$SOURCE ${RSYNCCONF[@]} $TARGET$TODAY $INC >> $LOG 2>&1
n'a pas fonctionné. J'apprécierais vraiment tout conseil.
Voici le script: http://wiki.ubuntuusers.de/_attachment?target=Skripte%2FBackup_mit_RSYNC%2Fbackup.sh
Si vous créez des options dans une chaîne, vous rencontrerez des problèmes lorsque vous essayez de l'utiliser (rsync "$RSYNCCONF"
). Mieux vaut utiliser un tableau - lorsque vous déréférencer le tableau, chaque élément sera correctement géré par le Shell:
RSYNCCONF=( --delete '--exclude=.*' --exclude=temp/ '--exclude="Ubuntu One/"' )
rsync "${RSYNCCONF[@]}"
Mettez-le entre guillemets simples:
RSYNCCONF="--delete --exclude=.* --exclude=temp/ --exclude='Ubuntu One/' "
ou mettez une barre oblique inverse avant l'espace:
RSYNCCONF="--delete --exclude=.* --exclude=temp/ --exclude=Ubuntu\\ One/ "
Voici une façon de procéder.
excludes=( ".*" temp/ "Ubuntu One/" )
rsync --delete "${excludes[@]/#/--exclude=}"
Notez que ce qui précède utilise la syntaxe bash, donc cela ne fonctionnera pas avec sh. De plus, les citations sont vitales, ne les omettez pas.
Voir http://mywiki.wooledge.org/WordSplitting pour une explication des raisons pour lesquelles mettre plus d'un argument dans une variable de chaîne est incorrect.
EDIT: De la Pastebin dans vos commentaires, cela semble être ce que vous voulez.
#!/bin/bash
source=/home/chris/
backupdir=/media/alteplatte/backups
backupname=$(date +%Y-%m-%d)-cd
excludes=( ".*" temp/ "Ubuntu One/" )
linkdest=$backupdir/link
if [[ -d $backupdir ]]; then
rsync -av ${linkdest:+"--link-dest=$linkdest"} --delete \
"${excludes[@]/#/--exclude=}" "$source" "$backupdir/$backupname"
else
echo "$0: $backupdir: Not a directory, make sure the filesystem is mounted" >&2
exit 1
fi