aurels-backuper 0.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +26 -0
- data/examples/backup.rb +71 -0
- data/lib/backuper.rb +7 -5
- metadata +4 -3
- data/README +0 -14
data/README.rdoc
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
A simple server backup tool written in Ruby.
|
2
|
+
|
3
|
+
= To install:
|
4
|
+
|
5
|
+
sudo gem source -a http://gems.github.com
|
6
|
+
sudo gem install aurels-backuper
|
7
|
+
|
8
|
+
= Dependencies:
|
9
|
+
|
10
|
+
UNIX commands:
|
11
|
+
- 'tar'
|
12
|
+
- 'mysqldump' if you want to backup your MySQL databases
|
13
|
+
- 'ncftpput' if you backup through FTP
|
14
|
+
- 'scp' if you backup through SSH
|
15
|
+
|
16
|
+
= To use:
|
17
|
+
|
18
|
+
- Create a script file which requires 'backuper' and create a new Backuper instance
|
19
|
+
- Configure cron to run the script as root when you want
|
20
|
+
|
21
|
+
An example of backup script is in examples/backup.rb (use it as a base template).
|
22
|
+
|
23
|
+
(c) 2009 Aurélien Malisart, aurelien.malisart@gmail.com, http://aurelien.malisart.be
|
24
|
+
|
25
|
+
Released under GNU GPLv3 license.
|
26
|
+
|
data/examples/backup.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'backuper'
|
5
|
+
|
6
|
+
################################################################################
|
7
|
+
|
8
|
+
backup = Backuper.new
|
9
|
+
|
10
|
+
# Unix general =================================================================
|
11
|
+
|
12
|
+
backup.config_file "/etc/ssh/sshd_config"
|
13
|
+
backup.config_file "/etc/passwd"
|
14
|
+
backup.config_file "/etc/group"
|
15
|
+
backup.config_file "/etc/contab"
|
16
|
+
|
17
|
+
# Apache2 ======================================================================
|
18
|
+
|
19
|
+
backup.config_file "/etc/apache2/httpd.conf"
|
20
|
+
backup.config_dir "/etc/apache2/sites-available"
|
21
|
+
|
22
|
+
# Nginx ========================================================================
|
23
|
+
|
24
|
+
backup.config_file "/opt/nginx/conf/nginx.conf"
|
25
|
+
backup.config_dir "/opt/nginx/conf/sites-available"
|
26
|
+
|
27
|
+
# SQLite databases =============================================================
|
28
|
+
|
29
|
+
backup.sqlite_database "/home/aurels/databases/espassvie.sqlite3"
|
30
|
+
|
31
|
+
# MySQL databases ==============================================================
|
32
|
+
|
33
|
+
backup.mysql_params = {
|
34
|
+
:user => 'backup',
|
35
|
+
:password => 'blup'
|
36
|
+
}
|
37
|
+
|
38
|
+
# We recommend creating a 'backup' user with only SELECT and LOCK TABLES
|
39
|
+
# privileges :
|
40
|
+
#
|
41
|
+
# mysql -u root -p
|
42
|
+
# GRANT SELECT, LOCK TABLES ON *.* TO backup@localhost IDENTIFIED BY 'blup';
|
43
|
+
# FLUSH PRIVILEGES;
|
44
|
+
|
45
|
+
backup.mysql_database 'db1'
|
46
|
+
backup.mysql_database 'db2'
|
47
|
+
|
48
|
+
# Data directories =============================================================
|
49
|
+
|
50
|
+
backup.data_dir "/super/projet/rails/public/assets"
|
51
|
+
|
52
|
+
# FTP or SSH setup =============================================================
|
53
|
+
|
54
|
+
backup.ftp_params = {
|
55
|
+
:host => '',
|
56
|
+
:user => '',
|
57
|
+
:password => '',
|
58
|
+
:path => '/backups' # path on host
|
59
|
+
}
|
60
|
+
|
61
|
+
# or:
|
62
|
+
|
63
|
+
#backup.ssh_params = {
|
64
|
+
# :host => '',
|
65
|
+
# :user => '', # this user needs to have his public key authorized on the host
|
66
|
+
# :path => '/home/aurels/backups' # path on host
|
67
|
+
#}
|
68
|
+
|
69
|
+
################################################################################
|
70
|
+
|
71
|
+
backup.perform!
|
data/lib/backuper.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
class Backuper
|
2
2
|
|
3
|
-
TMP_DIR = "/backuper"
|
3
|
+
TMP_DIR = "/tmp/backuper"
|
4
4
|
|
5
5
|
attr_writer :mysql_params
|
6
6
|
attr_writer :ftp_params
|
7
|
+
attr_writer :ssh_params
|
7
8
|
|
8
9
|
def initialize
|
9
10
|
@config_files = []
|
@@ -13,6 +14,7 @@ class Backuper
|
|
13
14
|
@mysql_databases = []
|
14
15
|
@data_dirs = []
|
15
16
|
@ftp_params = {}
|
17
|
+
@ssh_params = {}
|
16
18
|
@archive_filename = "backup-#{Time.now.strftime('%Y-%m-%d')}-#{Time.now.to_i}.tar.gz"
|
17
19
|
end
|
18
20
|
|
@@ -76,8 +78,6 @@ class Backuper
|
|
76
78
|
@mysql_databases.each do |db|
|
77
79
|
run "mysqldump #{db} --user=#{@mysql_params[:user]} --password=#{@mysql_params[:password]} > #{File.join(TMP_DIR, 'databases', 'mysql', "#{db}.sql")}"
|
78
80
|
end
|
79
|
-
else
|
80
|
-
say "MySQL databases backup not done because MySQL params are unset"
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -88,8 +88,10 @@ class Backuper
|
|
88
88
|
def upload_archive
|
89
89
|
unless @ftp_params.empty?
|
90
90
|
run "ncftpput -u #{@ftp_params[:user]} -p #{@ftp_params[:password]} #{@ftp_params[:host]} #{@ftp_params[:path]} /tmp/#{@archive_filename}"
|
91
|
-
|
92
|
-
|
91
|
+
end
|
92
|
+
|
93
|
+
unless @ssh_params.empty?
|
94
|
+
run "scp /tmp/#{@archive_filename} #{@ssh_params[:user]}@#{@ssh_params[:host]}:#{@ssh_params[:path]}"
|
93
95
|
end
|
94
96
|
end
|
95
97
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aurels-backuper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: "0.
|
4
|
+
version: "0.3"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Aur\xC3\xA9lien Malisart"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-07-25 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,8 +22,9 @@ extensions: []
|
|
22
22
|
extra_rdoc_files: []
|
23
23
|
|
24
24
|
files:
|
25
|
-
- README
|
25
|
+
- README.rdoc
|
26
26
|
- lib/backuper.rb
|
27
|
+
- examples/backup.rb
|
27
28
|
has_rdoc: false
|
28
29
|
homepage: http://github.com/aurels/backuper
|
29
30
|
post_install_message:
|
data/README
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
A simple server backup tool written in Ruby.
|
2
|
-
|
3
|
-
To install:
|
4
|
-
|
5
|
-
sudo gem list -a http://gems.github.com
|
6
|
-
sudo gem install aurels-backuper
|
7
|
-
|
8
|
-
To use:
|
9
|
-
|
10
|
-
- Create a script file which requires 'backuper' and create a new Backuper instance
|
11
|
-
- Configure cron to run the script as root when you want
|
12
|
-
|
13
|
-
Example of backup script in examples/backup.rb (use it as a base template)
|
14
|
-
|