BackupMan 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,30 @@
1
+ require 'backup_man/backup'
2
+ require 'backup_man/command'
3
+
4
+ module BackupMan
5
+ class Mysql < Backup
6
+
7
+ # we need a name for our backup-file (DSL)
8
+ def_dsl :filename
9
+
10
+ # options for the mysqldump run (DSL)
11
+ def_dsl :options
12
+
13
+ def set_defaults
14
+ super
15
+ @filename = "#{Date.today}-mysqlfull.sql.gz"
16
+ @options = '--all-databases -u root'
17
+ end
18
+
19
+ def _run
20
+ remote_cmd = "mysqldump #{@options}"
21
+ Command.new("#{ssh_connect_cmd} '#{remote_cmd} | gzip' > '#{@backup_directory}/#{@filename}'").run
22
+ end
23
+
24
+ # returns true if the backup already exists
25
+ def exists?
26
+ File.exists? "#{@backup_directory}/#{@filename}"
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require 'backup_man/backup'
2
+ require 'backup_man/command'
3
+
4
+ module BackupMan
5
+ class Rsync < Backup
6
+
7
+ # options for the rsync run (DSL)
8
+ def_dsl :options
9
+
10
+ def set_defaults
11
+ @backup_directory = "#{BackupMan.instance.destdir}/#{@name}/rsync" unless @backup_directory
12
+ super
13
+ @options = "-azR --delete"
14
+ end
15
+
16
+ def _run
17
+ @data_sources.each do |dir|
18
+ Command.new("rsync #{@options} -e '#{BackupMan.instance.ssh_app}' '#{@user}@#{@host}:#{dir}' '#{@backup_directory}'").run
19
+ end
20
+ end
21
+
22
+
23
+ end
24
+ end
@@ -0,0 +1,29 @@
1
+ require 'backup_man/backup'
2
+ require 'backup_man/command'
3
+ require 'backup_man/dsl'
4
+
5
+ module BackupMan
6
+ class Tar < Backup
7
+
8
+ def_dsl :filename
9
+ def_dsl :options
10
+
11
+ def set_defaults
12
+ super
13
+ @filename = "#{Date.today}-files.tgz"
14
+ @options = "zP"
15
+ end
16
+
17
+ def _run
18
+ remote_cmd = "tar -c#{@options}f - ", @data_sources.join(" ")
19
+ Command.new("#{ssh_connect_cmd} #{remote_cmd} > '#{@backup_directory}/#{@filename}'").run
20
+ end
21
+
22
+ # returns true if the backup already exists
23
+ def exists?
24
+ File.exists? "#{@backup_directory}/#{@filename}"
25
+ end
26
+
27
+
28
+ end
29
+ end
data/lib/backup_man.rb ADDED
@@ -0,0 +1,18 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ def require_relative(relative_feature)
5
+ c = caller.first
6
+ fail "Can't parse #{c}" unless c.rindex(/:\d+(:in `.*')?$/)
7
+ file = $`
8
+ if /\A\((.*)\)/ =~ file # eval, etc.
9
+ raise LoadError, "require_relative is called in #{$1}"
10
+ end
11
+ absolute = File.expand_path(relative_feature,
12
+ File.dirname(file))
13
+ require absolute
14
+ end
15
+
16
+ module BackupMan
17
+ TESTING = false
18
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ module BackupMan
4
+ describe "CLI" do
5
+
6
+ context "execute" do
7
+
8
+ it "should exit cleanly and print usage when -h is used" do
9
+ argv = ["-h"]
10
+ out = StringIO.new
11
+ lambda { ::BackupMan::CLI.execute( out, argv ) }.should raise_error SystemExit
12
+ out.string.should include("Usage: spec [options] {configname | configpath}")
13
+ end
14
+
15
+ it "should print an error when the log file is not writeable and continue to run cleanly" do
16
+ argv = ["-l", "/tmp/does/not/exist.log"]
17
+ out = StringIO.new
18
+ $stderr = StringIO.new
19
+ lambda { ::BackupMan::CLI.execute( out, ARGV) }.should_not raise_error SystemExit
20
+ $stderr.string.should include("Log file is not writeable")
21
+ end
22
+
23
+ end
24
+ end
25
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,17 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'backup_man'
4
+ require 'backup_man/cli'
5
+ require 'spec'
6
+ require 'spec/autorun'
7
+
8
+ Spec::Runner.configure do |config|
9
+
10
+ config.before do
11
+ Log = mock("logger") unless defined? Log
12
+ @log = mock("logger instance")
13
+ @log.stub(:debug)
14
+ Log.stub(:instance).and_return(@log)
15
+ end
16
+
17
+ end
metadata ADDED
@@ -0,0 +1,107 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: BackupMan
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Markus Strauss
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-20 00:00:00 +01:00
13
+ default_executable: backup_man
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rspec
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.2.9
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: yard
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: log4r
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.1.2
44
+ version:
45
+ description: A tool for system administrators to easily configure pull-over-SSH backups. Install this gem on your backup server. Configure your backups definitions in /etc/backup_man and run backup_man from cron to securely pull your data over SSH.
46
+ email: Markus@ITstrauss.eu
47
+ executables:
48
+ - backup_man
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - LICENSE
53
+ - README.rdoc
54
+ files:
55
+ - .document
56
+ - .gitignore
57
+ - .yardopts
58
+ - LICENSE
59
+ - README.rdoc
60
+ - Rakefile
61
+ - VERSION
62
+ - bin/backup_man
63
+ - examples/example-host-config
64
+ - lib/backup_man.rb
65
+ - lib/backup_man/backup.rb
66
+ - lib/backup_man/backup_man.rb
67
+ - lib/backup_man/cli.rb
68
+ - lib/backup_man/command.rb
69
+ - lib/backup_man/dsl.rb
70
+ - lib/backup_man/log.rb
71
+ - lib/backup_man/mysql.rb
72
+ - lib/backup_man/rsync.rb
73
+ - lib/backup_man/tar.rb
74
+ - spec/BackupMan_spec.rb
75
+ - spec/spec.opts
76
+ - spec/spec_helper.rb
77
+ has_rdoc: true
78
+ homepage: http://github.com/oowoo/BackupMan
79
+ licenses: []
80
+
81
+ post_install_message:
82
+ rdoc_options:
83
+ - --charset=UTF-8
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ version:
98
+ requirements: []
99
+
100
+ rubyforge_project: backupman
101
+ rubygems_version: 1.3.5
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: A tool for system administrators to easily configure pull-over-SSH backups.
105
+ test_files:
106
+ - spec/BackupMan_spec.rb
107
+ - spec/spec_helper.rb