diff --git a/handlers/rsync.in b/handlers/rsync.in
index 884a885f96fa6c20ea9d90a27744efa19a8e8dd4..73507c8db4d796ea3c848f77601bf50c26b0eece 100644
--- a/handlers/rsync.in
+++ b/handlers/rsync.in
@@ -1121,6 +1121,9 @@ for SECTION in $include; do
   set_filelist
   set_dest
 
+  # Ensure that a non-zero rsync exit status is caught by our handler
+  set -o pipefail
+
   info "Syncing $SECTION on $dest_path..."
   debug $nice $rsync "${rsync_options[@]}" $filelist_flag $excludes $batch_option $orig $dest_path
   $nice $rsync "${rsync_options[@]}" $filelist_flag $excludes $batch_option $orig $dest_path | tee -a $log