Commit e230551940b31f7779a16975f2b3e941815d2e03

Authored by Dmitriy Zaporozhets
1 parent 1d03fa2e

backup/restore uploads

@@ -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
lib/backup/uploads.rb 0 → 100644
@@ -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