在Windows主机上定时备份远程VPS(CentOS)数据的批处理_mysql数据库教程-查字典教程网
在Windows主机上定时备份远程VPS(CentOS)数据的批处理
在Windows主机上定时备份远程VPS(CentOS)数据的批处理
发布时间:2016-12-29 来源:查字典编辑
摘要:不过折腾VPS之后,就不只是要备份MySQL了,一些独立的站点数据也是需要备份的。如果有靠谱的第三方Linux主机或类似Amazon的云存储...

不过折腾 VPS 之后,就不只是要备份 MySQL 了,一些独立的站点数据也是需要备份的。

如果有靠谱的第三方 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=%~dp0exeplink.exe

set EXE_SCP=%~dp0exepscp.exe

set LINUX=%~dp0linux

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

:: 根据情况修改下面的参数

exeplink.exe -C root@192.168.1.100 -P 22 -pw password

:: 等待一下,会提示是否将 Key 加入本机信任主机列表里面,输入 yes 就可以了。

yes

:: 这就进去了,输入点常用命令玩玩,输入 exit 退出。

exit

根据这一篇文章的介绍,添加一个定时执行的计划任务;

手动执行一下上面添加的计划任务或观察一个执行周期,看备份是否有效。

待改进

同之前的脚本一样,似乎还缺少一个自动删除多少天前备份的功能。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新mysql数据库学习
    热门mysql数据库学习
    编程开发子分类