linuxkurs/beispiele/17/borg-www-backup.rb

92 lines
1.6 KiB
Ruby

#!/usr/bin/env ruby
require "date"
require "fileutils"
$NOW = Date.today.strftime("%d-%m-%Y_%H:%M:%S")
# borg repository
$REPO = "/home/dany/backups/borg"
# websites folder
$WEBSITESDIR = "/home/dany/www"
# local backup folder for db files
$BACKUPDIR = "/home/dany/backups"
unless File.exist?( $BACKUPDIR )
FileUtils.mkdir_p( $BACKUPDIR )
end
# Unterverzeichnisse von www die gebackuppt werden sollen
liste = [
"conf",
"danletard.de",
"papier-restaurierung",
"schubertdaniel",
"x2ero",
"conworx",
"rvv/wp-content",
"rvv/shop"
]
# websites
def websites( liste )
Dir.chdir( $WEBSITESDIR )
liste.each do |elem|
if File.exist?( elem )
`borg create -C zlib,8 #{$REPO}::#{elem}-{now:%d-%m-%Y_%H:%M:%S} #{elem} --exclude '*mpeg'`
else
puts "File or Directory \"#{elem}\" not found!\n"
end
end
end
# davical db backup
def calendar_db_backup
Dir.chdir( $BACKUPDIR )
`pg_dump -U davical_app davical | gzip > kalender-#{$NOW}.psql.gz`
end
# wordpress db backup
def wp_db_backup
host= "localhost"
user= "rvv"
pass= "owUy9JTWLHQ0"
#db= "rvv0rettung"
db= "rvv_dev"
do_sql_backup(host,user,pass,db)
end
# oxid db backup
def oxid_db_backup
host= "localhost"
user= "rvv"
pass= "owUy9JTWLHQ0"
db= "rvv_shop"
do_sql_backup(host,user,pass,db)
end
#
# Helper function
#
def do_sql_backup(host,user,pass,db)
Dir.chdir( $BACKUPDIR )
`mysqldump --opt --add-drop-table -h#{host} -u#{user} -p#{pass} #{db} | gzip > #{db}-#{$NOW}.sql.gz`
end
websites( liste )
wp_db_backup
oxid_db_backup
calendar_db_backup
FileUtils.chown_R( 1000, 1000, $BACKUPDIR)