diff options
Diffstat (limited to 'lib/backup/files.rb')
-rw-r--r-- | lib/backup/files.rb | 8 |
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' |