summaryrefslogtreecommitdiff
path: root/lib/backup
diff options
context:
space:
mode:
Diffstat (limited to 'lib/backup')
-rw-r--r--lib/backup/files.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/backup/files.rb b/lib/backup/files.rb
index a0948f8c0f5..0f6ed847dea 100644
--- a/lib/backup/files.rb
+++ b/lib/backup/files.rb
@@ -26,9 +26,15 @@ module Backup
FileUtils.rm_f(backup_tarball)
if ENV['STRATEGY'] == 'copy'
- cmd = [%w[rsync -a], exclude_dirs(:rsync), %W[#{app_files_dir} #{Gitlab.config.backup.path}]].flatten
+ cmd = [%w[rsync -a --delete], exclude_dirs(:rsync), %W[#{app_files_dir} #{Gitlab.config.backup.path}]].flatten
output, status = Gitlab::Popen.popen(cmd)
+ # Retry if rsync source files vanish
+ if status == 24
+ $stdout.puts "Warning: files vanished during rsync, retrying..."
+ output, status = Gitlab::Popen.popen(cmd)
+ end
+
unless status == 0
puts output
raise Backup::Error, 'Backup failed'