rmybackup 0.1.0 → 0.1.2
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.
- data/Readme.md +10 -15
- data/bin/rmybackup +6 -12
- data/lib/rmybackup/config_file.txt +2 -2
- data/lib/rmybackup/{config.rb → install_config.rb} +11 -3
- data/lib/rmybackup/purge_files.rb +17 -0
- data/lib/rmybackup.rb +7 -1
- metadata +5 -4
data/Readme.md
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# RMyBackup
|
2
2
|
|
3
|
-
RMyBackup was created to solve a simple problem I had, and is hopefully useful to somebody else out there.
|
3
|
+
RMyBackup was created to solve a simple problem I had, and is hopefully useful to somebody else out there. RMyBackup is a quick way to backup up specified mysql databases using mysqldump. It writes a gzipped .sql file using a date/time naming convention to a specified directory.
|
4
4
|
|
5
5
|
### To Install
|
6
6
|
# gem install rmybackup
|
7
7
|
|
8
8
|
## Usage
|
9
9
|
|
10
|
-
The gem will install an rmybackup binary. RMyBackup will read its configuration from /etc/rmybackup.conf (a sample configuration file is shown below). RMyBackup will backup the specified databases in the databases: [] list in the configuration file.
|
10
|
+
The gem will install an rmybackup binary. RMyBackup will read its configuration from ~/.rmybackup.conf or /etc/rmybackup.conf (a sample configuration file is shown below). The .rmybackup.conf file in your home folder will be used if present, next it rmybackup will look for /etc/rmybackup. You may also specify an alternate config file on the command line using rmybackup --config-file /alternate/config/file. RMyBackup will backup the specified databases in the databases: [] list in the configuration file.
|
11
11
|
|
12
|
-
To generate a sample config file, use the --
|
12
|
+
To generate a sample config file, use the --instal-config option. Default location is /etc/rmybackup.conf, or if we can't write to /etc, ~/.rmybacukp.conf.
|
13
13
|
|
14
|
-
# rmybackup --
|
14
|
+
# rmybackup --install-config [/config/location]
|
15
15
|
|
16
16
|
Right now the script relies on your [mysqldump] configuration in either /etc/my.cnf or the user's ~/.my.cnf. I'm hoping to change this soon, allowing you to specify the host, user, password, and socket in the configuration file.
|
17
17
|
|
@@ -29,22 +29,17 @@ Once everything is set up correctly in the config file, and mysqldump is able to
|
|
29
29
|
|
30
30
|
## Sample Configuration File
|
31
31
|
|
32
|
-
The default location for the configuration file is /etc/rmybackup.conf, formatted in YAML. You can specify a different config file on the command line using the --
|
32
|
+
The default location for the configuration file is /etc/rmybackup.conf then ~/.rmybacukp.conf, it's formatted in YAML. You can specify a different config file on the command line using the --config-file (-f) option.
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
backup_dir: /Users/bshelton/mysql_tmp
|
34
|
+
backup_dir: /Users/username/mysql_backups/
|
35
|
+
#Number of days to keep backups
|
36
|
+
remove_after: 7
|
38
37
|
|
39
38
|
#Databases to back up
|
40
|
-
databases: [
|
41
|
-
bercilak,
|
42
|
-
bbpress
|
43
|
-
]
|
39
|
+
databases: [ test2, test3 ]
|
44
40
|
|
45
41
|
#Command Locations
|
46
42
|
mysqldump_command: /usr/local/mysql/bin/mysqldump
|
47
43
|
gzip_command: /usr/bin/gzip
|
48
|
-
find_command: /usr/bin/find
|
49
44
|
|
50
|
-
If mysqldump_command,
|
45
|
+
If mysqldump_command, or gzip_command are left out, they will default to finding the applications in /usr/bin
|
data/bin/rmybackup
CHANGED
@@ -1,17 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
#Load our libraries, if we can't load them from the gem, assume we're running from source
|
4
|
-
|
5
|
-
|
6
|
-
require 'rmybackup'
|
7
|
-
rescue LoadError
|
8
|
-
require '../lib/rmybackup'
|
9
|
-
end
|
10
|
-
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rmybackup'
|
11
6
|
require 'optparse'
|
12
7
|
|
13
8
|
#GLOBALS
|
14
|
-
|
15
9
|
#Default to local config file if it exists
|
16
10
|
if File.exists?(File.expand_path("~/.rmybackup.conf"))
|
17
11
|
OPTIONS = { :config_file => File.expand_path("~/.rmybackup.conf") }
|
@@ -19,12 +13,12 @@ else
|
|
19
13
|
OPTIONS = { :config_file => "/etc/rmybackup.conf" }
|
20
14
|
end
|
21
15
|
|
22
|
-
GEM_VERSION = "0.1.
|
16
|
+
GEM_VERSION = "0.1.2"
|
23
17
|
|
24
18
|
#Process the command line arguments
|
25
19
|
ARGV.options do |opts|
|
26
20
|
#Set the config file
|
27
|
-
opts.on("-f /etc/rmybackup.conf","--
|
21
|
+
opts.on("-f /etc/rmybackup.conf","--config-file /etc/rmybackup.conf","Set Config File",String) do |o|
|
28
22
|
OPTIONS[:config_file] = o
|
29
23
|
end
|
30
24
|
|
@@ -33,7 +27,7 @@ ARGV.options do |opts|
|
|
33
27
|
|
34
28
|
#Allow the user to write the sample config file to either the default (no file specified) or to the file they specify
|
35
29
|
#on the command line
|
36
|
-
opts.on("-i [config_file location]","--
|
30
|
+
opts.on("-i [config_file location]","--install-config [config_file location]","Generates a sample config file",String) do |ic|
|
37
31
|
RMyBackup.install_config(ic)
|
38
32
|
exit 0
|
39
33
|
end
|
@@ -48,4 +42,4 @@ if not File.exists? OPTIONS[:config_file]
|
|
48
42
|
end
|
49
43
|
|
50
44
|
#Run
|
51
|
-
RMyBackup::Base.new(OPTIONS[:config_file])
|
45
|
+
RMyBackup::Base.new(OPTIONS[:config_file])
|
@@ -2,11 +2,19 @@ module RMyBackup
|
|
2
2
|
#Install a baseline config file from the template
|
3
3
|
def self.install_config(file=false)
|
4
4
|
#Default the file location
|
5
|
-
|
5
|
+
if not file
|
6
|
+
if File.writable_real?("/etc/rmybackup.conf")
|
7
|
+
file = "/etc/rmybackup.conf"
|
8
|
+
else
|
9
|
+
file = "~/.rmybackup.conf"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
#Expand the path
|
6
14
|
file = File.expand_path(file)
|
7
|
-
|
15
|
+
|
8
16
|
if File.exists? file
|
9
|
-
puts "
|
17
|
+
puts "#{file} already exists, do you want to overwrite it? (Y/n):"
|
10
18
|
STDOUT.flush
|
11
19
|
answer = gets.chomp
|
12
20
|
exit 1 unless answer.upcase == "Y" or answer.upcase == "YES"
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'time'
|
3
|
+
|
4
|
+
module RMyBackup
|
5
|
+
def self.purge_days(path,days=false)
|
6
|
+
return true unless days
|
7
|
+
Dir["#{path}/*.sql.gz"].each do |file|
|
8
|
+
mtime = File.mtime(File.expand_path(file))
|
9
|
+
mdate = Date.parse("#{mtime.year}-#{mtime.month}-#{mtime.day}")
|
10
|
+
date = Date.today - days
|
11
|
+
if mdate < date
|
12
|
+
puts "Cleaning up - #{file}"
|
13
|
+
File.delete(file)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/rmybackup.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'time'
|
3
|
-
require 'rmybackup/
|
3
|
+
require File.expand_path('../rmybackup/install_config',__FILE__)
|
4
|
+
require File.expand_path('../rmybackup/purge_files',__FILE__)
|
4
5
|
|
5
6
|
module RMyBackup
|
6
7
|
class Base
|
@@ -13,6 +14,7 @@ module RMyBackup
|
|
13
14
|
private
|
14
15
|
#Run the backups, we should have proper validation at this point
|
15
16
|
def run_backups
|
17
|
+
|
16
18
|
#Grab some config variables
|
17
19
|
mysql_dump = @config['mysqldump_command']
|
18
20
|
backup_dir = @config['backup_dir']
|
@@ -24,6 +26,9 @@ module RMyBackup
|
|
24
26
|
puts "Backing up #{db}\n"
|
25
27
|
system "#{mysql_dump} #{db} |#{gzip} > #{backup_dir}/#{db}_#{date_string}.sql.gz"
|
26
28
|
end
|
29
|
+
|
30
|
+
#Purges after x days
|
31
|
+
RMyBackup.purge_days(@config['backup_dir'],@config['remove_after'])
|
27
32
|
end
|
28
33
|
|
29
34
|
#Parse the config YAML file
|
@@ -37,6 +42,7 @@ module RMyBackup
|
|
37
42
|
@config['gzip_command'] = "/usr/bin/gzip" if @config['gzip_command'].nil?
|
38
43
|
@config['mysqldump_command'] = "/usr/bin/mysqldump" if @config['mysqldump_command'].nil?
|
39
44
|
@config['find_command'] = "/usr/bin/find" if @config['find_command'].nil?
|
45
|
+
@config['remove_after'] = @config['remove_after'] || false
|
40
46
|
|
41
47
|
#Backup dir validation
|
42
48
|
if not File.directory? @config['backup_dir']
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Bryan Shelton
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-13 00:00:00 -06:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -30,7 +30,8 @@ files:
|
|
30
30
|
- lib/rmybackup.rb
|
31
31
|
- Readme.md
|
32
32
|
- lib/rmybackup/config_file.txt
|
33
|
-
- lib/rmybackup/
|
33
|
+
- lib/rmybackup/install_config.rb
|
34
|
+
- lib/rmybackup/purge_files.rb
|
34
35
|
- bin/rmybackup
|
35
36
|
has_rdoc: true
|
36
37
|
homepage: http://github.com/bshelton229/rmybackup/
|