Class: DeeBee::CloudSync

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/dee_bee/cloud_sync.rb

Defined Under Namespace

Classes: NoHeadError

Constant Summary

Constants included from Helpers

Helpers::DEFAULT_DAYS_TO_KEEP_DAILY_FILES, Helpers::DEFAULT_DAYS_TO_KEEP_ORPHANS, Helpers::ONE_MONTH

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#age_in_days, #copy_files_of_pattern_to_directoy, #move_files_of_pattern_to_directoy, #remove_files_not_containing_substrings, #run_command, #symbolize_keys, #time_elapsed_for

Constructor Details

#initialize(configuration = DeeBee::Configuration.new) ⇒ CloudSync

Returns a new instance of CloudSync.



14
15
16
# File 'lib/dee_bee/cloud_sync.rb', line 14

def initialize (configuration = DeeBee::Configuration.new)
  @sync_settings =  configuration.settings['cloud_sync']
end

Instance Attribute Details

#sync_settingsObject (readonly)

Returns the value of attribute sync_settings.



12
13
14
# File 'lib/dee_bee/cloud_sync.rb', line 12

def sync_settings
  @sync_settings
end

Instance Method Details

#executeObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dee_bee/cloud_sync.rb', line 18

def execute
  puts "\nPerforming cloud sync..."
  time_elapsed_for("Cloud sync") do
    local_directory = sync_settings['local_directory']
    puts "  Syncing directory '#{local_directory}'"
    puts "    to provider '#{sync_settings['credentials']['provider']}'"
    puts "    on storage '#{sync_settings['provider_settings']['remote_storage']}'"

    Dir.chdir(local_directory) do
       = 
      raise 'local file list is empty: aborting' unless ()

      remote_storage = get_remote_storage
      remote_directory = get_remote_directory(remote_storage)

      upload_local_files_to_remote_directory(, remote_directory)
      remove_orphaned_remote_files_older_than(, remote_directory, DEFAULT_DAYS_TO_KEEP_ORPHANS)
      move_remote_files_to_long_term_storage_directory(remote_storage, , remote_directory)
    end
  end
end