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,6 +10,8 @@ v 5.1.0 | ||
| 10 | - Backup/Restore refactored. Backup dump project wiki too now | 10 | - Backup/Restore refactored. Backup dump project wiki too now |
| 11 | - Restyled Issues list. Show milestone version in issue row | 11 | - Restyled Issues list. Show milestone version in issue row |
| 12 | - Restyled Merge Request list | 12 | - Restyled Merge Request list |
| 13 | + - Backup now dump/restore uploads | ||
| 14 | + - Improved perfomance of dashboard | ||
| 13 | 15 | ||
| 14 | v 5.0.0 | 16 | v 5.0.0 |
| 15 | - Replaced gitolite with gitlab-shell | 17 | - Replaced gitolite with gitlab-shell |
| @@ -0,0 +1,25 @@ | @@ -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,6 +9,7 @@ namespace :gitlab do | ||
| 9 | 9 | ||
| 10 | Rake::Task["gitlab:backup:db:create"].invoke | 10 | Rake::Task["gitlab:backup:db:create"].invoke |
| 11 | Rake::Task["gitlab:backup:repo:create"].invoke | 11 | Rake::Task["gitlab:backup:repo:create"].invoke |
| 12 | + Rake::Task["gitlab:backup:uploads:create"].invoke | ||
| 12 | 13 | ||
| 13 | Dir.chdir(Gitlab.config.backup.path) | 14 | Dir.chdir(Gitlab.config.backup.path) |
| 14 | 15 | ||
| @@ -25,7 +26,7 @@ namespace :gitlab do | @@ -25,7 +26,7 @@ namespace :gitlab do | ||
| 25 | 26 | ||
| 26 | # create archive | 27 | # create archive |
| 27 | print "Creating backup archive: #{Time.now.to_i}_gitlab_backup.tar ... " | 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 | puts "done".green | 30 | puts "done".green |
| 30 | else | 31 | else |
| 31 | puts "failed".red | 32 | puts "failed".red |
| @@ -33,7 +34,7 @@ namespace :gitlab do | @@ -33,7 +34,7 @@ namespace :gitlab do | ||
| 33 | 34 | ||
| 34 | # cleanup: remove tmp files | 35 | # cleanup: remove tmp files |
| 35 | print "Deleting tmp directories ... " | 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 | puts "done".green | 38 | puts "done".green |
| 38 | else | 39 | else |
| 39 | puts "failed".red | 40 | puts "failed".red |
| @@ -99,10 +100,11 @@ namespace :gitlab do | @@ -99,10 +100,11 @@ namespace :gitlab do | ||
| 99 | 100 | ||
| 100 | Rake::Task["gitlab:backup:db:restore"].invoke | 101 | Rake::Task["gitlab:backup:db:restore"].invoke |
| 101 | Rake::Task["gitlab:backup:repo:restore"].invoke | 102 | Rake::Task["gitlab:backup:repo:restore"].invoke |
| 103 | + Rake::Task["gitlab:backup:uploads:restore"].invoke | ||
| 102 | 104 | ||
| 103 | # cleanup: remove tmp files | 105 | # cleanup: remove tmp files |
| 104 | print "Deleting tmp directories ... " | 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 | puts "done".green | 108 | puts "done".green |
| 107 | else | 109 | else |
| 108 | puts "failed".red | 110 | puts "failed".red |
| @@ -136,5 +138,19 @@ namespace :gitlab do | @@ -136,5 +138,19 @@ namespace :gitlab do | ||
| 136 | puts "done".green | 138 | puts "done".green |
| 137 | end | 139 | end |
| 138 | end | 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 | end # namespace end: backup | 155 | end # namespace end: backup |
| 140 | end # namespace end: gitlab | 156 | end # namespace end: gitlab |