class Backup::Storage::GoogleDrive
Attributes
chunk_size[RW]
Chunk size, specified in bytes (power of two, i.e. 8M = 8 * 1024 * 1024)
max_retries[RW]
Number of times to retry failed operations.
Default: 10
rclone_config[RW]
Path to the rclone config file
rclone_drive[RW]
Name of the rclone remote drive
rclone_exec[RW]
Path to the rclone executable
Public Class Methods
new(model, storage_id = nil)
click to toggle source
Creates a new instance of the storage object
Calls superclass method
# File lib/backup-googledrive.rb, line 33 def initialize(model, storage_id = nil) super @rclone_exec ||= "/usr/bin/rclone" @rclone_config ||= "/root/.config/rclone/rclone.conf" @rclone_drive ||= "remote" @path ||= "" @chunk_size ||= 8388608 @max_retries ||= 3 @cmd_base = "#{rclone_exec} --config #{rclone_config} --retries #{max_retries} --drive-chunk-size=#{chunk_size} --drive-use-trash=false" path.sub!(/^\//, "") end
Private Instance Methods
remove!(package)
click to toggle source
Called by the Cycler. Any error raised will be logged as a warning.
# File lib/backup-googledrive.rb, line 59 def remove!(package) Logger.info "Removing backup package dated #{package.time}..." remote_path = remote_path_for(package) package.filenames.each do |filename| puts `#{@cmd_base} purge #{rclone_drive}:#{remote_path}` end end
transfer!()
click to toggle source
# File lib/backup-googledrive.rb, line 48 def transfer! package.filenames.each do |filename| src = File.join(Config.tmp_path, filename) dest = File.join(remote_path, filename) Logger.info "Storing '#{dest}'..." puts `#{@cmd_base} copy #{src} #{rclone_drive}:#{dest}` end end