
《MysqL必读在windows主机上定时备份远程VPS(CentOS)数据的批处理》要点:
本文介绍了MysqL必读在windows主机上定时备份远程VPS(CentOS)数据的批处理,希望对您有用。如果有疑问,可以联系我们。
如果有靠谱的第三方 linux 主机或类似 Amazon 的云存储,那就简单多了,linux - linux 的备份很方便.
不过我想在自己的 windows7 下每天/周运行一次备份,就有了这个小工具.
大概的想法如下:
使用 Putty 自带的 plink.exe 连接到 VPS 上,运行备份并退出登录;
接着使用 Putty 自带的 pscp.exe 将备份复制到本机;
添加一个计划任务,每天/周自动运行一次,实现定时备份.
代码如下:
windows 下负责触发备份的 index.bat
@echo off & setlocal ENABLEEXTENSIONS
:: 这里只是 SSH 连接和备份路径配置信息
:: 请同时修改同目录下 linux 文件中要备份的路径和 MysqL 数据库
:: SSH 相关信息
set SERVER=192.168.1.100
set PORT=22
set USER=root
set PASSWORD=password
:: 和同目录下 linux 文件中配置的路径对应
set BACKUP_PATH=/root/backup
:: 备份要下载到的本机位置(会自动创建)
set SAVE_PATH=D:\Backup\
:: ---------- 配置结束,以下请勿修改 ----------
:: 运行时变量
set EXE_SSH=%~dp0\exe\plink.exe
set EXE_SCP=%~dp0\exe\pscp.exe
set liNUX=%~dp0\linux
set YEAR=%date:~0,4%
set MONTH=%date:~5,2%
set DAY=%date:~8,2%
set TRUE_PATH=%sAVE_PATH%%YEAR%-%MONTH%-%DAY%\
:: 创建备份路径
echo Creating Backup Dir...
if not exist %TRUE_PATH% (
mkdir %TRUE_PATH% 2>nul
)
if not exist %TRUE_PATH% (
echo Backup path: %TRUE_PATH% not exists,create dir Failed.
goto exit
)
echo Creating Backup Dir... Done.
:: 生成备份目录和文件
echo Connecting to Remote Server and creating backups...
%EXE_SSH% -C %USER%@%sERVER% -P %PORT% -pw %PASSWORD% -m %liNUX% 2>nul
echo Connecting to Remote Server and creating backups... Done.
:: 下载备份
echo Downloading backups...
%EXE_SCP% -pw %PASSWORD% -P %PORT% %USER%@%sERVER%:%BACKUP_PATH%/*.* %TRUE_PATH%
echo Downloading backups... Done.
:exit
echo Exit
由 index.bat 调用的 linux 端命令
代码如下:
#!/bin/bash
PATH=/usr/local/sbin:/usr/bin:/bin
# ---------- 配置项,不要最后的 / ----------
# 备份文件存储的路径,请与 index.bat 中的 BACKUP_PATH 保持一致
BACKUP_PATH=/root/backup
# 要备份的文件或目录,多个以空格分隔
fileS="/www/CMStop /www/dbpma"
# MysqLdump 可执行文件的全路径(如果可以直接执行 MysqLdump 可不用全路径)
MysqLDUMP=MysqLdump
# 要备份的 MysqL 数据库,多个以空格分隔
DATABASES="MysqL test"
# MysqL 用户名
USER=root
# MysqL 密码
PASSWD=
# ---------- 配置项结束,下面的不用修改 ----------
# 运行时变量
DATETIME=$(date -d Now +%Y-%m-%d)
CURPATH=$(cd "$(dirname "$0")"; pwd)
# 创建备份目录
if [ ! -d $BACKUP_PATH ]; then
mkdir -p $BACKUP_PATH
fi
rm -fR $BACKUP_PATH/*
# 备份 MysqL 数据库
cd $BACKUP_PATH
for database in $DATABASES
do
if [ "$PASSWD" == "" ]; then
$MysqLDUMP -u$USER $database > $database.$DATETIME.dump.sql
else
$MysqLDUMP -u$USER -p$PASSWD $database > $database.$DATETIME.dump.sql
fi
tar czf $database.$DATETIME.dump.sql.tar.gz $database.$DATETIME.dump.sql
rm -f $database.$DATETIME.dump.sql
done
# 备份文件或目录
for file in $fileS
do
tar czf $file.$DATETIME.tar.gz $file
mv $file.$DATETIME.tar.gz $BACKUP_PATH
done
# 完成
cd $CURPATH
exit
下载完成之后不删除服务器上产生的备份文件,因为下一次备份前会自动清除.
下载和使用 下载地址
下载文件到你本机,解压到某个地方,然后根据上文的说明修改配置项;
由于 SSH 第一次登录需要添加 Key 到本机,这一步没法简单忽略,可行的办法是载入 Putty 的 Session,不过挺麻烦的,还是运行一次简单些,我们要执行一次 SSH 登录:
代码如下:
:: 切换到你解压到的目录,如 D:\VPS\:
cd /d D:\VPS\
:: 根据情况修改下面的参数
exe\plink.exe -C root@192.168.1.100 -P 22 -pw password
:: 等待一下,会提示是否将 Key 加入本机信任主机列表里面,输入 yes 就可以了.
yes
:: 这就进去了,输入点常用命令玩玩,输入 exit 退出.
exit
根据这一篇文章的介绍,添加一个定时执行的计划任务;
手动执行一下上面添加的计划任务或观察一个执行周期,看备份是否有效.
待改进
同之前的脚本一样,似乎还缺少一个自动删除多少天前备份的功能. 总结
以上是内存溢出为你收集整理的Mysql必读在Windows主机上定时备份远程VPS(CentOS)数据的批处理全部内容,希望文章能够帮你解决Mysql必读在Windows主机上定时备份远程VPS(CentOS)数据的批处理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)