#!/usr/bin/ruby
#apt-get install ruby1.9.1-full
ENCKEY = "ntdeck"
MYSQL_USER = "root"
MYSQL_PWD = '"ntdeck"'
SSH_KEY ="/root/.ssh/bak/id_rsa"
$hosts =[]
#$hosts[0] ="cndev@tx3.piza.cc"
#$hosts[1] ="cndev@mh.zapto.org"

DATE = Time.now.strftime("%Y-%m-%d-%H%M")
DATE2 = Time.now.strftime("%Y-%m-%d")
WORK_DIR = "/backup"
HOSTNAME = `hostname`.strip
REMOTE_DIR = "/home/cndev/beifen/ariaboard/#{DATE2}"

#cleaning
def cleaning
  `rm -rf #{WORK_DIR}`
  `mkdir -p #{WORK_DIR}`
end

def szip dst, org, rm_org = false
  puts "Zipping #{org} -> #{dst}, delete = #{rm_org} ..."
  #`tar cfJ #{dst} #{org}`
  `tar cfj #{dst} #{org}`
  `rm #{org}` if rm_org
end

def backup_mysql db
  fn = "#{WORK_DIR}/#{DATE}_#{db}.sql.txt"
  `mysqldump -u #{MYSQL_USER} -p#{MYSQL_PWD} #{db} > #{fn}`
  `xz #{fn}`
end

def backup_mongo db, where=WORK_DIR
  temp_dir = where +"/mongo_temp"
  `mkdir -p #{temp_dir}`
  `mongodump --db #{db} --out=#{temp_dir}`
  szip "#{WORK_DIR}/#{DATE}_#{db}_mongodump.7z", temp_dir
  `rm -rf #{temp_dir}`
end

def make_hash
  `md5sum #{WORK_DIR}/* > #{WORK_DIR}/#{DATE}_#{HOSTNAME}_md5s.txt`
end

def send_to_remote
  puts "sending..."
  $hosts.each do |host|
    puts "processing #{host}"
    `ssh -i #{SSH_KEY} #{host} mkdir -p #{REMOTE_DIR}`
    puts "copying data to #{host}"
    system("scp -i #{SSH_KEY} -r #{WORK_DIR}/* #{host}:#{REMOTE_DIR}")
  end
end

def rdiff_backup local_dir, remote_dir
  $hosts.each do |host|
    puts "rdiff-backup #{local_dir} to #{host}"
    cmd="rdiff-backup  #{local_dir} #{host}::#{remote_dir}"
    result = `#{cmd}`
  end
end

cleaning


szip "#{WORK_DIR}/#{DATE}_etc_files.tar.xz", "/etc"
#szip "#{WORK_DIR}/#{DATE}_etc_files.tar.xz", "/etc"
szip "#{WORK_DIR}/#{DATE}_ariaboard_files.tar.xz", "/www"
szip "#{WORK_DIR}/#{DATE}_photonicat-docker.tar.xz", "/data/novotech-docker"


backup_mysql "ariaboard"
backup_mysql "ariawiki2"
backup_mysql "c2h2wiki"
backup_mysql "lunawiki"
backup_mysql "pcat_wiki"

make_hash
#send_to_remote
