Commit 0fbb5a86 authored by David Gerő's avatar David Gerő

Add Human Readable Timestamp to backup tar file

parent 50a410a9
---
title: Add Human Readable format for rake backup
merge_request: 7188
author: David Gerő
...@@ -353,7 +353,7 @@ restore: ...@@ -353,7 +353,7 @@ restore:
```shell ```shell
# This command will overwrite the contents of your GitLab database! # This command will overwrite the contents of your GitLab database!
sudo gitlab-rake gitlab:backup:restore BACKUP=1393513186 sudo gitlab-rake gitlab:backup:restore BACKUP=1393513186_2014_02_27
``` ```
Restart and check GitLab: Restart and check GitLab:
......
...@@ -14,7 +14,7 @@ module Backup ...@@ -14,7 +14,7 @@ module Backup
s[:gitlab_version] = Gitlab::VERSION s[:gitlab_version] = Gitlab::VERSION
s[:tar_version] = tar_version s[:tar_version] = tar_version
s[:skipped] = ENV["SKIP"] s[:skipped] = ENV["SKIP"]
tar_file = "#{s[:backup_created_at].to_i}_gitlab_backup.tar" tar_file = s[:backup_created_at].strftime('%s_%Y_%m_%d') + '_gitlab_backup.tar'
Dir.chdir(Gitlab.config.backup.path) do Dir.chdir(Gitlab.config.backup.path) do
File.open("#{Gitlab.config.backup.path}/backup_information.yml", File.open("#{Gitlab.config.backup.path}/backup_information.yml",
...@@ -83,10 +83,14 @@ module Backup ...@@ -83,10 +83,14 @@ module Backup
Dir.chdir(Gitlab.config.backup.path) do Dir.chdir(Gitlab.config.backup.path) do
file_list = Dir.glob('*_gitlab_backup.tar') file_list = Dir.glob('*_gitlab_backup.tar')
file_list.map! { |f| $1.to_i if f =~ /(\d+)_gitlab_backup.tar/ } file_list.map! do |path_string|
file_list.sort.each do |timestamp| if path_string =~ /(\d+)(?:_\d{4}_\d{2}_\d{2})?_gitlab_backup\.tar/
if Time.at(timestamp) < (Time.now - keep_time) { timestamp: $1.to_i, path: path_string }
if Kernel.system(*%W(rm #{timestamp}_gitlab_backup.tar)) end
end
file_list.sort.each do |file|
if Time.at(file[:timestamp]) < (Time.now - keep_time)
if Kernel.system(*%W(rm #{file[:path]}))
removed += 1 removed += 1
end end
end end
...@@ -103,7 +107,7 @@ module Backup ...@@ -103,7 +107,7 @@ module Backup
Dir.chdir(Gitlab.config.backup.path) Dir.chdir(Gitlab.config.backup.path)
# check for existing backups in the backup dir # check for existing backups in the backup dir
file_list = Dir.glob("*_gitlab_backup.tar").each.map { |f| f.split(/_/).first.to_i } file_list = Dir.glob("*_gitlab_backup.tar")
puts "no backups found" if file_list.count == 0 puts "no backups found" if file_list.count == 0
if file_list.count > 1 && ENV["BACKUP"].nil? if file_list.count > 1 && ENV["BACKUP"].nil?
...@@ -112,7 +116,7 @@ module Backup ...@@ -112,7 +116,7 @@ module Backup
exit 1 exit 1
end end
tar_file = ENV["BACKUP"].nil? ? File.join("#{file_list.first}_gitlab_backup.tar") : File.join(ENV["BACKUP"] + "_gitlab_backup.tar") tar_file = ENV["BACKUP"].nil? ? file_list.first : file_list.grep(ENV['BACKUP']).first
unless File.exist?(tar_file) unless File.exist?(tar_file)
puts "The specified backup doesn't exist!" puts "The specified backup doesn't exist!"
......
...@@ -333,4 +333,35 @@ describe 'gitlab:app namespace rake task' do ...@@ -333,4 +333,35 @@ describe 'gitlab:app namespace rake task' do
expect { run_rake_task('gitlab:backup:restore') }.not_to raise_error expect { run_rake_task('gitlab:backup:restore') }.not_to raise_error
end end
end end
describe "Human Readable Backup Name" do
def tars_glob
Dir.glob(File.join(Gitlab.config.backup.path, '*_gitlab_backup.tar'))
end
before :all do
@origin_cd = Dir.pwd
reenable_backup_sub_tasks
FileUtils.rm tars_glob
# Redirect STDOUT and run the rake task
orig_stdout = $stdout
$stdout = StringIO.new
run_rake_task('gitlab:backup:create')
$stdout = orig_stdout
@backup_tar = tars_glob.first
end
after :all do
FileUtils.rm(@backup_tar)
Dir.chdir @origin_cd
end
it 'name has human readable time' do
expect(@backup_tar).to match(/\d+_\d{4}_\d{2}_\d{2}_gitlab_backup.tar$/)
end
end
end # gitlab:app namespace end # gitlab:app namespace
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment