get paths for tools also in db script
This commit is contained in:
parent
851725de25
commit
4bd0c0cbf6
1 changed files with 62 additions and 19 deletions
81
backup_db.sh
81
backup_db.sh
|
@ -1,6 +1,49 @@
|
|||
#!/bin/bash
|
||||
#set -x
|
||||
|
||||
# get path to all needed tools
|
||||
# /bin
|
||||
echo=$(which echo)
|
||||
gzip=$(which gzip)
|
||||
grep=$(which grep)
|
||||
mktemp=$(which mktemp)
|
||||
mv=$(which mv)
|
||||
pwd=$(which pwd)
|
||||
rm=$(which rm)
|
||||
umount=$(which umount)
|
||||
# /usr/bin
|
||||
cut=$(which cut)
|
||||
dirname=$(which dirname)
|
||||
expr=$(which expr)
|
||||
head=$(which head)
|
||||
mysql=$(which mysql)
|
||||
mysqldump=$(which mysqldump)
|
||||
nice=$(which nice)
|
||||
rsync=$(which rsync)
|
||||
seq=$(which seq)
|
||||
ssh=$(which ssh)
|
||||
sshfs=$(which sshfs)
|
||||
tail=$(which tail)
|
||||
|
||||
# check if all needed tools are installed (only the ones not installed under /bin/)
|
||||
alltoolsinstalled="yes"
|
||||
test "$cut" = "" && echo "'cut' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$dirname" = "" && echo "'dirname' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$expr" = "" && echo "'expr' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$head" = "" && echo "'head' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$mysql" = "" && echo "'mysql' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$mysqldump" = "" && echo "'mysqldump' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$nice" = "" && echo "'nice' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$rsync" = "" && echo "'rsync' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$ssh" = "" && echo "'ssh' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$sshfs" = "" && echo "'sshfs' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
test "$tail" = "" && echo "'tail' not installed or not found by 'which'" && alltoolsinstalled="no"
|
||||
|
||||
if [ "$alltoolsinstalled" = "no" ]
|
||||
then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# main configuration
|
||||
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
config_file="$script_dir/main.cfg"
|
||||
|
@ -16,14 +59,14 @@ function source_section {
|
|||
section_start="^\[$section_name\]$"
|
||||
section_end="^\[/$section_name\]$"
|
||||
|
||||
line_start=$(grep -n "$section_start" "$config_name" | cut -d: -f1)
|
||||
line_end=$(expr $(grep -n "$section_end" "$config_name" | cut -d: -f1) - 1)
|
||||
line_diff=$(expr $line_end - $line_start)
|
||||
line_start=$($grep -n "$section_start" "$config_name" | $cut -d: -f1)
|
||||
line_end=$($expr $($grep -n "$section_end" "$config_name" | $cut -d: -f1) - 1)
|
||||
line_diff=$($expr $line_end - $line_start)
|
||||
|
||||
tmp_file=$(mktemp)
|
||||
head -n $line_end "$config_name" | tail -n $line_diff > "$tmp_file"
|
||||
tmp_file=$($mktemp)
|
||||
$head -n $line_end "$config_name" | $tail -n $line_diff > "$tmp_file"
|
||||
source "$tmp_file"
|
||||
rm -f "$tmp_file"
|
||||
$rm -f "$tmp_file"
|
||||
}
|
||||
|
||||
# copy file with rsync to server
|
||||
|
@ -32,11 +75,11 @@ function rsync_server {
|
|||
dirto="$2"
|
||||
#nice -n 19 rsync -rle "ssh -i $keyfile" "$filefrom" "$userserver:$dirto"
|
||||
# limit the bandwith
|
||||
nice -n 19 rsync --bwlimit=100000 -rle "ssh -i $keyfile" "$filefrom" "$userserver:$dirto"
|
||||
$nice -n 19 $rsync --bwlimit=100000 -rle "$ssh -i $keyfile" "$filefrom" "$userserver:$dirto"
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]
|
||||
then
|
||||
echo "problem in rsync: $filefrom"
|
||||
$echo "problem in rsync: $filefrom"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -47,33 +90,33 @@ source_section "$config_file" "general"
|
|||
cd "$db_dir"
|
||||
|
||||
# get all databases
|
||||
databases=$(nice -n 19 mysql -u root -N -e "show databases;" | grep -v "^information_schema$" | grep -v "^mysql$" | grep -v "^performance_schema$")
|
||||
databases=$($nice -n 19 $mysql -u root -N -e "show databases;" | $grep -v "^information_schema$" | $grep -v "^mysql$" | $grep -v "^performance_schema$")
|
||||
|
||||
# handle each database
|
||||
for database in $databases
|
||||
do
|
||||
# dump and gzip database
|
||||
nice -n 19 mysqldump -u root "$database" > "$database.sql"
|
||||
nice -n 19 gzip "$database.sql"
|
||||
$nice -n 19 $mysqldump -u root "$database" > "$database.sql"
|
||||
$nice -n 19 $gzip "$database.sql"
|
||||
|
||||
# mount for renaming
|
||||
sshfs $userserver:$backupdir $backupdir_local -o IdentityFile=$keyfile -o IdentitiesOnly=yes
|
||||
$sshfs $userserver:$backupdir $backupdir_local -o IdentityFile=$keyfile -o IdentitiesOnly=yes
|
||||
|
||||
# rotate old backups
|
||||
for count in `seq 7 -1 2`
|
||||
do
|
||||
count_last=$(expr $count - 1)
|
||||
rm -f "$backupdir_local/$backupdirsingle/$database.sql.gz.$count"
|
||||
mv -f "$backupdir_local/$backupdirsingle/$database.sql.gz.$count_last" "$backupdir_local/$backupdirsingle/$database.sql.gz.$count" > /dev/null 2>&1
|
||||
count_last=$($expr $count - 1)
|
||||
$rm -f "$backupdir_local/$backupdirsingle/$database.sql.gz.$count"
|
||||
$mv -f "$backupdir_local/$backupdirsingle/$database.sql.gz.$count_last" "$backupdir_local/$backupdirsingle/$database.sql.gz.$count" > /dev/null 2>&1
|
||||
done
|
||||
rm -f "$backupdir_local/$backupdirsingle/$database.sql.gz.1"
|
||||
mv -f "$backupdir_local/$backupdirsingle/$database.sql.gz" "$backupdir_local/$backupdirsingle/$database.sql.gz.1" > /dev/null 2>&1
|
||||
$rm -f "$backupdir_local/$backupdirsingle/$database.sql.gz.1"
|
||||
$mv -f "$backupdir_local/$backupdirsingle/$database.sql.gz" "$backupdir_local/$backupdirsingle/$database.sql.gz.1" > /dev/null 2>&1
|
||||
|
||||
# unmount
|
||||
umount $backupdir_local
|
||||
$umount $backupdir_local
|
||||
|
||||
rsync_server "$database.sql.gz" "$backupdir/$backupdirsingle/"
|
||||
|
||||
# delete temporary file
|
||||
rm -f "$database.sql.gz"
|
||||
$rm -f "$database.sql.gz"
|
||||
done # for database in $databases
|
||||
|
|
Loading…
Reference in a new issue