summaryrefslogtreecommitdiff
path: root/lib/backup/uploads.rb
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2015-11-02 13:02:25 +0000
committerKamil Trzciński <ayufan@ayufan.eu>2015-11-02 13:02:25 +0000
commitedab429c977fa0eda46ed8a5ae2b29265898f74c (patch)
tree68be9786af1f0e06f02061f6720b23efb885c705 /lib/backup/uploads.rb
parent329e067ff1d235af38f686145b03ced6c1fe7d85 (diff)
parent58260a0327a953499a07e9cad8d9aaad2d25699b (diff)
downloadgitlab-ce-edab429c977fa0eda46ed8a5ae2b29265898f74c.tar.gz
Merge branch 'backup-improvements' into 'master'
Reduce disk IO and space usage during backups This is based on improvements made to the GitLab CI 8.0 backup script. - Avoid creating many small intermediate files while backing up builds and uploads by using tar and light gzip compression - Use same backup/restore code for uploads and builds - Only store a compressed intermediate DB dump See merge request !1520
Diffstat (limited to 'lib/backup/uploads.rb')
-rw-r--r--lib/backup/uploads.rb30
1 files changed, 4 insertions, 26 deletions
diff --git a/lib/backup/uploads.rb b/lib/backup/uploads.rb
index 1f9626644e6..0a0ec564ba4 100644
--- a/lib/backup/uploads.rb
+++ b/lib/backup/uploads.rb
@@ -1,34 +1,12 @@
module Backup
- class Uploads
- attr_reader :app_uploads_dir, :backup_uploads_dir, :backup_dir
+ class Uploads < Files
def initialize
- @app_uploads_dir = File.realpath(Rails.root.join('public', 'uploads'))
- @backup_dir = Gitlab.config.backup.path
- @backup_uploads_dir = File.join(Gitlab.config.backup.path, 'uploads')
+ super('uploads', Rails.root.join('public/uploads'))
end
- # Copy uploads from public/uploads to backup/uploads
- def dump
- 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
-
- def restore
- backup_existing_uploads_dir
-
- FileUtils.cp_r(backup_uploads_dir, app_uploads_dir)
- end
-
- def backup_existing_uploads_dir
- timestamped_uploads_path = File.join(app_uploads_dir, '..', "uploads.#{Time.now.to_i}")
- if File.exists?(app_uploads_dir)
- FileUtils.mv(app_uploads_dir, File.expand_path(timestamped_uploads_path))
- end
+ def create_files_dir
+ Dir.mkdir(app_files_dir)
end
end
end