summaryrefslogtreecommitdiff
path: root/app/models/backup_job.rb
diff options
context:
space:
mode:
authorStefan Wintermeyer <stefan.wintermeyer@amooma.de>2013-02-06 16:04:23 +0100
committerStefan Wintermeyer <stefan.wintermeyer@amooma.de>2013-02-06 16:04:23 +0100
commit5685009f9fd60012034c1fde95d696225389a477 (patch)
tree14bfe30adfed7c389975c5d6bfe759c031285d73 /app/models/backup_job.rb
parent87c71a3b6f33d28b03a8bde95cc3f921400dc8ae (diff)
parent07d49f54067cfb8666f650323c7ffefe1e860b24 (diff)
Merge branch 'backup' into develop
Diffstat (limited to 'app/models/backup_job.rb')
-rw-r--r--app/models/backup_job.rb27
1 files changed, 19 insertions, 8 deletions
diff --git a/app/models/backup_job.rb b/app/models/backup_job.rb
index c9bde2b..c1f12e4 100644
--- a/app/models/backup_job.rb
+++ b/app/models/backup_job.rb
@@ -1,6 +1,8 @@
class BackupJob < ActiveRecord::Base
attr_accessible :started_at, :finished_at, :state, :directory, :size_of_the_backup
+ mount_uploader :backup_file, BackupFileUploader
+
before_create :set_state_to_queued
after_create :initiate_backup
after_destroy :delete_the_backup_directory
@@ -16,17 +18,26 @@ class BackupJob < ActiveRecord::Base
end
def make_a_backup
+ backup_directory = '/var/backups/GS5'
+ backup_name_prefix = 'GS5-backup-'
if self.finished_at.nil? && self.state == 'queued'
self.state = 'running'
self.save
- original_directories = Dir.glob('/var/backups/GS5/*')
+ original_directories = Dir.glob("#{backup_directory}/*")
system "backup perform --trigger GS5 --config_file #{Rails.root.join('config','backup.rb')}"
- self.directory = (Dir.glob('/var/backups/GS5/*') - original_directories).first
- if self.directory.blank?
+ tmp_backup_directory = (Dir.glob("#{backup_directory}/*") - original_directories).first
+ if tmp_backup_directory.blank?
self.state = 'failed'
else
- file = File::Stat.new(self.directory)
+ system "cd #{backup_directory} && tar czf #{backup_name_prefix}#{tmp_backup_directory}.tar.gz #{tmp_backup_directory}"
+ require 'fileutils'
+ FileUtils.rm_rf tmp_backup_directory
+ file = File::Stat.new("#{backup_directory}/#{backup_name_prefix}#{tmp_backup_directory}.tar.gz")
+
self.size_of_the_backup = file.size
+
+ self.backup_file = File.open("#{backup_directory}/#{backup_name_prefix}#{tmp_backup_directory}.tar.gz")
+
self.finished_at = Time.now
self.state = 'successful'
end
@@ -35,9 +46,9 @@ class BackupJob < ActiveRecord::Base
end
def delete_the_backup_directory
- if !self.directory.blank?
- require 'fileutils'
- FileUtils.rm_rf self.directory
- end
+ # if !tmp_backup_directory.blank?
+ # require 'fileutils'
+ # FileUtils.rm_rf tmp_backup_directory
+ # end
end
end