Bash Бакап MySQL баз

Вариаций данного скрипта на просторах сети очень много, вот мой, который я использую для сохранения копий MySQL баз данный, он сохраняет каждую базу в отдельности и пакует их при помощи gzip, так же есть возможность игнорировать определенные базы.

#!/bin/bash
#
#Buckup MySQL databases
#v0.1 base
#v0.11 Added chmod and chown
#v0.12 gzip bases MySQLuser="root"

MySQLuser="user" # username with Grand priveleges
MySQLuserPass="password"       # password for user
MySQLhost="localhost"          # hostname or IP of MySQL server # Linux bin paths change it if needed

# Linux bin paths change it if needed
MYSQL="mysql"
MYSQLDUMP="mysqldump"
GZIP="gzip"

# Backup dest directory
dest="/root/tmp"

# Main directory where backup will be stored
main="$dest/test"

# Get data in dd-mm-yyyy format
time_now="$(date +"%d-%m-%Y")"

# DO NOT BACKUP these databases, use space between bases.
ignore="test vmail"

[ ! -d $main ] && mkdir -p $main || :

# Only root can access it!
chown root:root -R $dest
chmod 0600 $dest # Get database list

#Starting buckup precess
enter="$($MYSQL -u $MySQLuser -h $MySQLhost -p$MySQLuserPass -Bse 'show databases')" #Buckup process
for db in $enter
do
skipdb=-1
if [ "$ignore" != "" ];
then
for i in $ignore
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi

if [ "$skipdb" == "-1" ] ; then
FILE="$main/$db.$MySQLhost.$time_now.gz"

# do all inone job in pipe,
# connect to mysql using mysqldump for select mysql database
# gzip after that
$MYSQLDUMP -u $MySQLuser -h $MySQLhost -p$MySQLuserPass $db | $GZIP -9 > $FILE
fi
done

Случайные Статьи

Loading…


Количество просмотров :1923

Оставьте коментарий