Commit e230551940b31f7779a16975f2b3e941815d2e03
1 parent
1d03fa2e
Exists in
master
and in
4 other branches
backup/restore uploads
Showing
3 changed files
with
46 additions
and
3 deletions
Show diff stats
CHANGELOG
| ... | ... | @@ -10,6 +10,8 @@ v 5.1.0 |
| 10 | 10 | - Backup/Restore refactored. Backup dump project wiki too now |
| 11 | 11 | - Restyled Issues list. Show milestone version in issue row |
| 12 | 12 | - Restyled Merge Request list |
| 13 | + - Backup now dump/restore uploads | |
| 14 | + - Improved perfomance of dashboard | |
| 13 | 15 | |
| 14 | 16 | v 5.0.0 |
| 15 | 17 | - Replaced gitolite with gitlab-shell | ... | ... |
| ... | ... | @@ -0,0 +1,25 @@ |
| 1 | +module Backup | |
| 2 | + class Uploads | |
| 3 | + attr_reader :app_uploads_dir, :backup_uploads_dir, :backup_dir | |
| 4 | + | |
| 5 | + def initialize | |
| 6 | + @app_uploads_dir = Rails.root.join('public', 'uploads') | |
| 7 | + @backup_dir = Gitlab.config.backup.path | |
| 8 | + @backup_uploads_dir = File.join(Gitlab.config.backup.path, 'uploads') | |
| 9 | + end | |
| 10 | + | |
| 11 | + # Copy uploads from public/uploads to backup/uploads | |
| 12 | + def dump | |
| 13 | + FileUtils.mkdir_p(backup_uploads_dir) | |
| 14 | + FileUtils.cp_r(app_uploads_dir, backup_dir) | |
| 15 | + end | |
| 16 | + | |
| 17 | + def restore | |
| 18 | + if File.exists?(app_uploads_dir) | |
| 19 | + FileUtils.mv(app_uploads_dir, Rails.root.join('public', "uploads.#{Time.now.to_i}")) | |
| 20 | + end | |
| 21 | + | |
| 22 | + FileUtils.cp_r(backup_uploads_dir, app_uploads_dir) | |
| 23 | + end | |
| 24 | + end | |
| 25 | +end | ... | ... |
lib/tasks/gitlab/backup.rake
| ... | ... | @@ -9,6 +9,7 @@ namespace :gitlab do |
| 9 | 9 | |
| 10 | 10 | Rake::Task["gitlab:backup:db:create"].invoke |
| 11 | 11 | Rake::Task["gitlab:backup:repo:create"].invoke |
| 12 | + Rake::Task["gitlab:backup:uploads:create"].invoke | |
| 12 | 13 | |
| 13 | 14 | Dir.chdir(Gitlab.config.backup.path) |
| 14 | 15 | |
| ... | ... | @@ -25,7 +26,7 @@ namespace :gitlab do |
| 25 | 26 | |
| 26 | 27 | # create archive |
| 27 | 28 | print "Creating backup archive: #{Time.now.to_i}_gitlab_backup.tar ... " |
| 28 | - if Kernel.system("tar -cf #{Time.now.to_i}_gitlab_backup.tar repositories/ db/ backup_information.yml") | |
| 29 | + if Kernel.system("tar -cf #{Time.now.to_i}_gitlab_backup.tar repositories/ db/ uploads/ backup_information.yml") | |
| 29 | 30 | puts "done".green |
| 30 | 31 | else |
| 31 | 32 | puts "failed".red |
| ... | ... | @@ -33,7 +34,7 @@ namespace :gitlab do |
| 33 | 34 | |
| 34 | 35 | # cleanup: remove tmp files |
| 35 | 36 | print "Deleting tmp directories ... " |
| 36 | - if Kernel.system("rm -rf repositories/ db/ backup_information.yml") | |
| 37 | + if Kernel.system("rm -rf repositories/ db/ uploads/ backup_information.yml") | |
| 37 | 38 | puts "done".green |
| 38 | 39 | else |
| 39 | 40 | puts "failed".red |
| ... | ... | @@ -99,10 +100,11 @@ namespace :gitlab do |
| 99 | 100 | |
| 100 | 101 | Rake::Task["gitlab:backup:db:restore"].invoke |
| 101 | 102 | Rake::Task["gitlab:backup:repo:restore"].invoke |
| 103 | + Rake::Task["gitlab:backup:uploads:restore"].invoke | |
| 102 | 104 | |
| 103 | 105 | # cleanup: remove tmp files |
| 104 | 106 | print "Deleting tmp directories ... " |
| 105 | - if Kernel.system("rm -rf repositories/ db/ backup_information.yml") | |
| 107 | + if Kernel.system("rm -rf repositories/ db/ uploads/ backup_information.yml") | |
| 106 | 108 | puts "done".green |
| 107 | 109 | else |
| 108 | 110 | puts "failed".red |
| ... | ... | @@ -136,5 +138,19 @@ namespace :gitlab do |
| 136 | 138 | puts "done".green |
| 137 | 139 | end |
| 138 | 140 | end |
| 141 | + | |
| 142 | + namespace :uploads do | |
| 143 | + task :create => :environment do | |
| 144 | + puts "Dumping uploads ... ".blue | |
| 145 | + Backup::Uploads.new.dump | |
| 146 | + puts "done".green | |
| 147 | + end | |
| 148 | + | |
| 149 | + task :restore => :environment do | |
| 150 | + puts "Restoring uploads ... ".blue | |
| 151 | + Backup::Uploads.new.restore | |
| 152 | + puts "done".green | |
| 153 | + end | |
| 154 | + end | |
| 139 | 155 | end # namespace end: backup |
| 140 | 156 | end # namespace end: gitlab | ... | ... |