]> gitweb.fluxo.info Git - backupninja.git/commitdiff
Run rsync command-line through a shell, so that single-quotes around excludes are...
authorintrigeri <intrigeri@boum.org>
Fri, 15 Jun 2012 18:27:31 +0000 (20:27 +0200)
committerintrigeri <intrigeri@boum.org>
Fri, 15 Jun 2012 18:30:25 +0000 (20:30 +0200)
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.

handlers/rsync.in

index 2620c471bb74d752964a194053afaadf52d1feaa..f0df52f588117b173b07cc787ff74bcc77d8c73e 100644 (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"