我在 WIndows Server 上有多个 MySQL 数据库,我想通过创建一个具有数据库名称的文件夹并在相关数据库的每个表的 .SQL 文件夹内创建一个文件夹来备份所有这些数据库。这个想法是为了更容易恢复信息,因为有时我只需要恢复一个表而不是整个数据库。
我对此进行了一些研究,并找到了一个可以做到这一点的 shell 脚本。该脚本为服务器上的每个数据库创建一个文件夹,并在其中为每个表创建一个 .SQL 文件,然后将所有这些文件夹压缩为一个 .ZIP 文件,并仍将其发送到 FTP 服务器(这对我来说不是必需的)。
下面是我找到的shell脚本。
#!/bin/sh
# System + MySQL backup script
# Copyright (c) 2008 Marchost
# This script is licensed under GNU GPL version 2.0 or above
# ---------------------------------------------------------------------
#########################
######TO BE MODIFIED#####
### System Setup ###
BACKUP=YOUR_LOCAL_BACKUP_DIR
### MySQL Setup ###
MUSER="MYSQL_USER"
MPASS="MYSQL_USER_PASSWORD"
MHOST="localhost"
### FTP server Setup ###
FTPD="YOUR_FTP_BACKUP_DIR"
FTPU="YOUR_FTP_USER"
FTPP="YOUR_FTP_USER_PASSWORD"
FTPS="YOUR_FTP_SERVER_ADDRESS"
######DO NOT MAKE MODIFICATION BELOW#####
#########################################
### Binaries ###
TAR="$(which tar)"
GZIP="$(which gzip)"
FTP="$(which ftp)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
### Today + hour in 24h format ###
NOW=$(date +"%d%H")
### Create hourly dir ###
mkdir $BACKUP/$NOW
### Get all databases name ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
### Create dir for each databases, backup tables in individual files ###
mkdir $BACKUP/$NOW/$db
for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_`;
do
FILE=$BACKUP/$NOW/$db/$i.sql.gz
echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 > $FILE
done
done
### Compress all tables in one nice file to upload ###
ARCHIVE=$BACKUP/$NOW.tar.gz
ARCHIVED=$BACKUP/$NOW
$TAR -cvf $ARCHIVE $ARCHIVED
### Dump backup using FTP ###
cd $BACKUP
DUMPFILE=$NOW.tar.gz
$FTP -n $FTPS <<END_SCRIPT
quote USER $FTPU
quote PASS $FTPP
cd $FTPD
mput $DUMPFILE
quit
END_SCRIPT
### Delete the backup dir and keep archive ###
rm -rf $ARCHIVED
最后,我可以使用这个脚本,但是我这里没有 Linux 机器,我也无法使用 Linux 创建任何 VM。我尝试将此脚本转换为批处理文件 (.bat),但我没有成功,因为我对高级脚本不是很了解。
是否有满足我需求的 Windows 解决方案?或者是否可以将此脚本转换为在 Windows 中工作?
先感谢您。