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.
This commit is contained in:
intrigeri 2012-06-15 20:27:31 +02:00
parent 1b48bc4444
commit 29dcdbae91

View File

@ -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"