Report abuse

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/ruby
# ---------------------------------------------------------------------
# MySQL Backup Utility
# Usage: ./mysql_backup.rb or ruby mysql_backup.rb
# ---------------------------------------------------------------------

$backup_archive = true # gzip files after processing
$backup_dir = "/home/storage/backup/" # output directory
$backup_template = "project-%s-%s.sql" # text-%dbname-%timestamp.sql
$backup_cmd = "mysqldump -u local_backup --add-drop-table --databases %s > %s" # command to backup
$backup_dblist = [ # list of databases to backup
  'main', 
  'users', 
  'admin', 
  'cards'
] 

def backup_database(database) 
  time = Time.now()
  time_str = sprintf("%02i-%02i-%04i-%02i%02i%02i",time.day,time.month,time.year,time.hour,time.min,time.sec)
  filename = sprintf($backup_template,database,time_str)
  filename = "#{$backup_dir}#{filename}"

  cmd = sprintf($backup_cmd,database,filename)
  if system(cmd) then
    system("gzip --best #{filename}") if $backup_archive
  end
end

$backup_dblist.each do |db|
  puts "Processing database... #{db}"
  backup_database(db)
end