From: intrigeri Date: Fri, 15 Jun 2012 18:27:31 +0000 (+0200) Subject: Run rsync command-line through a shell, so that single-quotes around excludes are... X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=29dcdbae919787978fafd41a12d48338958e92f9;p=backupninja.git Run rsync command-line through a shell, so that single-quotes around excludes are interpreted (Closes: #677410) When --exclude 'something' is passed directly to rsync without going through a shell, rsync tries to match a file whose name contains single quotes, which is definitely not what we want it to do: exclude arguments protected with single quotes are meant to be passed to a shell. --- diff --git a/handlers/rsync.in b/handlers/rsync.in index 2620c47..f0df52f 100644 --- a/handlers/rsync.in +++ b/handlers/rsync.in @@ -1116,9 +1116,9 @@ for SECTION in $include; do set_dest info "Syncing $SECTION on $dest_path..." - debug $nice $rsync "${rsync_options[@]}" $filelist_flag $excludes $batch_option $orig $dest_path + debug $nice $rsync ${rsync_options[@]} $filelist_flag $excludes $batch_option $orig $dest_path set_pipefail - $nice $rsync "${rsync_options[@]}" $filelist_flag "$excludes" $batch_option $orig $dest_path | tee -a $log + $nice su -c "$rsync ${rsync_options[@]} --delete-excluded $filelist_flag $excludes $batch_option $orig $dest_path" | tee -a $log if [ "$?" != "0" ]; then fatal "Rsync error when trying to transfer $SECTION"