diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2015-11-02 13:02:25 +0000 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2015-11-02 13:02:25 +0000 |
commit | edab429c977fa0eda46ed8a5ae2b29265898f74c (patch) | |
tree | 68be9786af1f0e06f02061f6720b23efb885c705 /lib/backup/uploads.rb | |
parent | 329e067ff1d235af38f686145b03ced6c1fe7d85 (diff) | |
parent | 58260a0327a953499a07e9cad8d9aaad2d25699b (diff) | |
download | gitlab-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.rb | 30 |
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 |