diff options
Diffstat (limited to 'app/models/backup_job.rb')
-rw-r--r-- | app/models/backup_job.rb | 27 |
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 |