Class: S3BackupManager::FileBackup

Inherits:
Object
  • Object
show all
Defined in:
lib/models/file_backup.rb

Direct Known Subclasses

DatabaseBackup

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ FileBackup

Returns a new instance of FileBackup.



9
10
11
12
# File 'lib/models/file_backup.rb', line 9

def initialize(opts = {})
  @bucket = Bucket.find(opts[:bucket])
  super()
end

Instance Attribute Details

#bucketObject

Returns the value of attribute bucket.



7
8
9
# File 'lib/models/file_backup.rb', line 7

def bucket
  @bucket
end

Instance Method Details

#backup(file, directory = "filesystem") ⇒ Object



18
19
20
21
22
23
# File 'lib/models/file_backup.rb', line 18

def backup(file, directory = "filesystem")
  stored_file_name = "#{Time.now.strftime("%Y%m%d%H%M%S")}/#{File.basename(file)}"
  encrypted_file = encrypt(pack(file))
  bucket.store("#{directory}/#{stored_file_name}", open(encrypted_file))    
  cleanup!
end

#filesObject



14
15
16
# File 'lib/models/file_backup.rb', line 14

def files
  bucket.files.select{|f| f.key.match(%r{^filesystem/})}
end

#restore(file, timestamp, destination, directory = "filesystem") ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/models/file_backup.rb', line 25

def restore(file, timestamp, destination, directory = "filesystem")
  if file.match(timestamp)
    data = bucket.retrieve("#{directory}/#{file}")
  else
    data = bucket.retrieve("#{directory}/#{timestamp}/#{file}")
  end
  decrypted_file = decrypt(file, timestamp, data)
  unpack(decrypted_file, destination)
  cleanup!
end