lib/backs3/backup.rb in jemmyw-backs3-0.0.3 vs lib/backs3/backup.rb in jemmyw-backs3-0.0.4

- old
+ new

@@ -1,86 +1,21 @@ require File.dirname(__FILE__) + '/backs3' module Backs3 class Backup include Backs3 - include AWS::S3 def initialize(options = {}) @options = options @options['prefix'] ||= '' - end - def first_backup? - last_backup.nil? + establish_connection + + @backups = load_backup_info + @backup = BackupInfo.new(@backups, @options) end - def full_backup - @options['force-full'] || first_backup? || Time.now.to_i - last_backup > (@options['full'] || 7).days - end - - def last_backup - backup_info['last_backup'].to_i - end - - def backup_key - @options['prefix'] + @current_backup - end - - def last_key - @options['prefix'] + last_backup.to_s - end - - def files_to_backup - @files_to_backup ||= begin - Dir.glob(File.join(@options['folder'], '**', '**')).select do |file| - if File.directory?(file) || File.symlink?(file) - false - else - if @options['exclude'].blank? || file !~ /#{@options['exclude']}/ - if full_backup || File.mtime(file).to_i > last_backup - true - else - false - end - else - false - end - end - end - end - end - def backup - @current_backup = Time.now.to_i.to_s - @files_to_backup = nil - @backup_info = nil - - establish_connection - - puts "Backup started at #{Time.now}" - puts "Last backup happened at #{backup_info['last_backup']}" - puts "Performing %s" % (full_backup ? "full backup" : "incremental backup") - - files_to_backup.each do |filename| - puts "Backing up #{filename}" - file_md5 = md5(filename) - aws_filename = File.join(backup_key, filename) - - object = S3Object.find(aws_filename, @options['bucket']) rescue nil - - if object.nil? || object.metadata[:md5sum] != file_md5 - S3Object.store(aws_filename, open(filename), @options['bucket']) - object = S3Object.find(aws_filename, @options['bucket']) - object.metadata[:md5sum] = file_md5 - object.save - end - end - - backup_info['last_backup'] = @current_backup - backup_info['backups'] ||= [] - backup_info['backups'] << @current_backup - S3Object.store(@options['prefix'] + 's3backup', YAML.dump(backup_info), @options['bucket']) - puts "Backup completed, #{files_to_backup.size} files backed up" + @backup.backup end end end \ No newline at end of file