diff options
| -rw-r--r-- | lib/backup/database.rb | 7 | ||||
| -rw-r--r-- | lib/backup/repository.rb | 5 | ||||
| -rw-r--r-- | lib/backup/uploads.rb | 6 | 
3 files changed, 14 insertions, 4 deletions
| diff --git a/lib/backup/database.rb b/lib/backup/database.rb index 8450019980f..bbb230a10f0 100644 --- a/lib/backup/database.rb +++ b/lib/backup/database.rb @@ -7,7 +7,11 @@ module Backup      def initialize        @config = YAML.load_file(File.join(Rails.root,'config','database.yml'))[Rails.env]        @db_dir = File.join(Gitlab.config.backup.path, 'db') -      FileUtils.mkdir_p(@db_dir, mode: 0700)unless Dir.exists?(@db_dir) +      FileUtils.rm_rf(@db_dir) +      # Ensure the parent dir of @db_dir exists +      FileUtils.mkdir_p(Gitlab.config.backup.path) +      # Fail if somebody raced to create @db_dir before us +      FileUtils.mkdir(@db_dir, mode: 0700)      end      def dump @@ -25,7 +29,6 @@ module Backup        abort 'Backup failed' unless success        $progress.print 'Compressing database ... ' -      FileUtils.rm_f db_file_name_gz        success = system('gzip', db_file_name)        report_success(success)        abort 'Backup failed: compress error' unless success diff --git a/lib/backup/repository.rb b/lib/backup/repository.rb index 36d43d62982..4d70f7883dd 100644 --- a/lib/backup/repository.rb +++ b/lib/backup/repository.rb @@ -130,7 +130,10 @@ module Backup      def prepare        FileUtils.rm_rf(backup_repos_path) -      FileUtils.mkdir_p(backup_repos_path, mode: 0700) +      # Ensure the parent dir of backup_repos_path exists +      FileUtils.mkdir_p(Gitlab.config.backup.path) +      # Fail if somebody raced to create backup_repos_path before us +      FileUtils.mkdir(backup_repos_path, mode: 0700)      end      def silent diff --git a/lib/backup/uploads.rb b/lib/backup/uploads.rb index ed445f79084..1f9626644e6 100644 --- a/lib/backup/uploads.rb +++ b/lib/backup/uploads.rb @@ -10,7 +10,11 @@ module Backup      # Copy uploads from public/uploads to backup/uploads      def dump -      FileUtils.mkdir_p(backup_uploads_dir, mode: 0700) +      FileUtils.rm_rf(backup_uploads_dir) +      # Ensure the parent dir of backup_uploads_dir exists +      FileUtils.mkdir_p(Gitlab.config.backup.path) +      # Fail if somebody raced to create backup_uploads_dir before us +      FileUtils.mkdir(backup_uploads_dir, mode: 0700)        FileUtils.cp_r(app_uploads_dir, backup_dir)      end | 
