Class: Backup::Compressor::Gzip

Inherits:
Base
  • Object
show all
Extended by:
Utilities::Helpers
Defined in:
lib/backup/compressor/gzip.rb

Defined Under Namespace

Classes: Error

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Utilities::Helpers

utility_remote

Methods inherited from Base

#compress_with

Methods included from Backup::Config::Helpers

included

Constructor Details

#initialize(&block) ⇒ Gzip

Creates a new instance of Backup::Compressor::Gzip



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/backup/compressor/gzip.rb', line 44

def initialize(&block)
  load_defaults!

  @level ||= false
  @rsyncable ||= false

  instance_eval(&block) if block_given?

  @cmd = "#{ utility(:gzip) }#{ options }"
  @ext = '.gz'
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Backup::Config::Helpers

Instance Attribute Details

#levelObject

Specify the level of compression to use.

Values should be a single digit from 1 to 9. Note that setting the level to either extreme may or may not give the desired result. Be sure to check the documentation for the compressor being used.

The default ‘level` is 6.



18
19
20
# File 'lib/backup/compressor/gzip.rb', line 18

def level
  @level
end

#rsyncableObject

Use the ‘–rsyncable` option with `gzip`.

This option directs ‘gzip` to compress data using an algorithm that allows `rsync` to efficiently detect changes. This is especially useful when used to compress `Archive` or `Database` backups that will be stored using Backup’s ‘RSync` Storage option.

The ‘–rsyncable` option is only available on patched versions of `gzip`. While most distributions apply this patch, this option may not be available on your system. If it’s not available, Backup will log a warning and continue to use the compressor without this option.



32
33
34
# File 'lib/backup/compressor/gzip.rb', line 32

def rsyncable
  @rsyncable
end

Class Method Details

.has_rsyncable?Boolean

Determine if --rsyncable is supported and cache the result.

Returns:

  • (Boolean)


36
37
38
39
40
# File 'lib/backup/compressor/gzip.rb', line 36

def self.has_rsyncable?
  return @has_rsyncable unless @has_rsyncable.nil?
  cmd = "#{ utility(:gzip) } --rsyncable --version >/dev/null 2>&1; echo $?"
  @has_rsyncable = %x[#{ cmd }].chomp == '0'
end