Class: Backarch::Archive
- Inherits:
-
Object
- Object
- Backarch::Archive
- Defined in:
- lib/backarch/archive.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.run ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/backarch/archive.rb', line 10 def run o = new o.create Config.config.each_pair do |provider, params| o.push_archive_to provider, params end o.delete Config.config.keys end |
Instance Method Details
#create ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/backarch/archive.rb', line 20 def create if local_archive_complete? LOG.info "Archive of snapshot #{archive_name} already completed" return end LOG.info "Creating archive of snapshot: #{archive_name}" TarWrapper.create_multiple_volumes(snapshot_folder, archive_folder) local_archive_complete! end |
#delete(providers) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/backarch/archive.rb', line 31 def delete providers if local_archive_complete? and not providers.select { |provider| remote_archive_complete? provider }.empty? and Dir.exists? archive_folder LOG.info "Removing archive folder #{archive_folder}" FileUtils.rm_rf archive_folder FileUtils.rm_rf snapshot_folder end end |
#push_archive_to(provider, archive_info) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/backarch/archive.rb', line 39 def push_archive_to provider, archive_info if provider == "google" raise ArgumentError, "Google no longer supported" end $0 = "#{Config.program_name} archive pushing archive to #{provider}" if remote_archive_complete? provider LOG.warn "Remote archival of snapshot #{archive_name} already completed" return end unless local_archive_complete? LOG.error "Snapshot #{archive_name} not locally present" return end begin remote_path = "#{archive_info["path"]}#{remote_archive_path(archive_info)}" start_time = Time.now LOG.info("Beginning archive of #{snapshot_folder} to #{provider}://#{archive_info["bucket"]}/#{remote_path} @ #{Time.now}") send("push_to_#{provider}".to_sym, archive_info, remote_path, archive_folder) end_time = Time.now LOG.info("Completed archive of #{snapshot_folder} to #{provider} @ #{end_time} - #{end_time - start_time}s elapsed") rescue Exception => er LOG.error("Failed to push archive #{snapshot_folder} to #{provider} @ #{Time.now}: #{er.message}") er.backtrace.each { |line| LOG.error line } end end |