mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-09 12:46:07 +10:00
Backup LFS objects same as any upload.
This commit is contained in:
@@ -29,7 +29,7 @@ sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
|
||||
```
|
||||
|
||||
Also you can choose what should be backed up by adding environment variable SKIP. Available options: db,
|
||||
uploads (attachments), repositories, builds(CI build output logs), artifacts (CI build artifacts).
|
||||
uploads (attachments), repositories, builds(CI build output logs), artifacts (CI build artifacts), lfs (LFS objects).
|
||||
Use a comma to specify several options at the same time.
|
||||
|
||||
```
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
require 'backup/files'
|
||||
|
||||
module Backup
|
||||
class Lfs < Files
|
||||
def initialize
|
||||
super('lfs', Settings.lfs.storage_path)
|
||||
end
|
||||
|
||||
def create_files_dir
|
||||
Dir.mkdir(app_files_dir, 0700)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -154,7 +154,7 @@ module Backup
|
||||
end
|
||||
|
||||
def archives_to_backup
|
||||
%w{uploads builds artifacts}.map{ |name| (name + ".tar.gz") unless skipped?(name) }.compact
|
||||
%w{uploads builds artifacts lfs}.map{ |name| (name + ".tar.gz") unless skipped?(name) }.compact
|
||||
end
|
||||
|
||||
def folders_to_backup
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace :gitlab do
|
||||
Rake::Task["gitlab:backup:uploads:create"].invoke
|
||||
Rake::Task["gitlab:backup:builds:create"].invoke
|
||||
Rake::Task["gitlab:backup:artifacts:create"].invoke
|
||||
Rake::Task["gitlab:backup:lfs:create"].invoke
|
||||
|
||||
backup = Backup::Manager.new
|
||||
backup.pack
|
||||
@@ -34,6 +35,7 @@ namespace :gitlab do
|
||||
Rake::Task["gitlab:backup:uploads:restore"].invoke unless backup.skipped?("uploads")
|
||||
Rake::Task["gitlab:backup:builds:restore"].invoke unless backup.skipped?("builds")
|
||||
Rake::Task["gitlab:backup:artifacts:restore"].invoke unless backup.skipped?("artifacts")
|
||||
Rake::Task["gitlab:backup:lfs:restore"].invoke unless backup.skipped?("lfs")
|
||||
Rake::Task["gitlab:shell:setup"].invoke
|
||||
|
||||
backup.cleanup
|
||||
@@ -134,6 +136,25 @@ namespace :gitlab do
|
||||
end
|
||||
end
|
||||
|
||||
namespace :lfs do
|
||||
task create: :environment do
|
||||
$progress.puts "Dumping lfs objects ... ".blue
|
||||
|
||||
if ENV["SKIP"] && ENV["SKIP"].include?("lfs")
|
||||
$progress.puts "[SKIPPED]".cyan
|
||||
else
|
||||
Backup::Lfs.new.dump
|
||||
$progress.puts "done".green
|
||||
end
|
||||
end
|
||||
|
||||
task restore: :environment do
|
||||
$progress.puts "Restoring lfs objects ... ".blue
|
||||
Backup::Lfs.new.restore
|
||||
$progress.puts "done".green
|
||||
end
|
||||
end
|
||||
|
||||
def configure_cron_mode
|
||||
if ENV['CRON']
|
||||
# We need an object we can say 'puts' and 'print' to; let's use a
|
||||
|
||||
Reference in New Issue
Block a user