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 | ... | ... |