# encoding: utf-8 module Backup module Cleaner class << self ## # Logs warnings if any temporary files still exist # from the last time this model/trigger was run, # then removes the files. def prepare(model) @model = model messages = [] if packaging_folder_dirty? messages << <<-EOS The temporary backup folder still contains files! '#{ File.join(Config.tmp_path, @model.trigger) }' These files will now be removed. EOS FileUtils.rm_rf(File.join(Config.tmp_path, @model.trigger)) end package_files = tmp_path_package_files unless package_files.empty? # the chances that tmp_path would be dirty # AND package files exist are practically nil messages << ('-' * 74) unless messages.empty? messages << <<-EOS The temporary backup folder '#{ Config.tmp_path }' appears to contain the package files from the previous backup! #{ package_files.join("\n") } These files will now be removed. EOS package_files.each {|file| FileUtils.rm_f(file) } end unless messages.empty? Logger.warn Errors::CleanerError.new(<<-EOS) Cleanup Warning #{ messages.join("\n") } Please check the log for messages and/or your notifications concerning this backup: '#{ @model.label } (#{ @model.trigger })' The temporary files which had to be removed should not have existed. EOS end end ## # Remove the temporary folder used during packaging def remove_packaging(model) Logger.info "Cleaning up the temporary files..." FileUtils.rm_rf(File.join(Config.tmp_path, model.trigger)) end ## # Remove the final package files from tmp_path # Note: 'force' is used, since a Local Storage may *move* these files. def remove_package(package) Logger.info "Cleaning up the package files..." package.filenames.each do |file| FileUtils.rm_f(File.join(Config.tmp_path, file)) end end ## # Logs warnings if any temporary files still exist # when errors occur during the backup def warnings(model) @model = model messages = [] if packaging_folder_dirty? messages << <<-EOS The temporary backup folder still contains files! '#{ File.join(Config.tmp_path, @model.trigger) }' This folder may contain completed Archives and/or Database backups. EOS end package_files = tmp_path_package_files unless package_files.empty? # the chances that tmp_path would be dirty # AND package files exist are practically nil messages << ('-' * 74) unless messages.empty? messages << <<-EOS The temporary backup folder '#{ Config.tmp_path }' appears to contain the backup files which were to be stored: #{ package_files.join("\n") } EOS end unless messages.empty? Logger.warn Errors::CleanerError.new(<<-EOS) Cleanup Warning #{ messages.join("\n") } Make sure you check these files before the next scheduled backup for '#{ @model.label } (#{ @model.trigger })' These files will be removed at that time! EOS end end private def packaging_folder_dirty? !Dir[File.join(Config.tmp_path, @model.trigger, '*')].empty? end def tmp_path_package_files Dir[File.join( Config.tmp_path, "????.??.??.??.??.??.#{ @model.trigger }.tar{,[.-]*}" )] end end end end