• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 在Windows主机上定时备份远程VPS(CentOS)数据的批处理

在Windows主机上定时备份远程VPS(CentOS)数据的批处理

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了定时备份,远程VPS等相关知识,希望本文的分享对您有所帮助

我想在自己的 Windows7 下每天/周运行一次备份,就有了这个小工具

不过折腾 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=%~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

根据的介绍,添加一个定时执行的计划任务;
手动执行一下上面添加的计划任务或观察一个执行周期,看备份是否有效。
待改进
同之前的脚本一样,似乎还缺少一个自动删除多少天前备份的功能。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • linux下mysql自动备份数据库与自动删除临时文件
  • MySQL定时器开启、调用实现代码
  • linux下mysql自动备份脚本代码
  • Mysql 数据库常用备份方法和注意事项
  • linux下备份MYSQL数据库的方法
  • mysqldump中关于定时备份数据的详细介绍(图文)
  • 在Windows主机上定时备份远程VPS(CentOS)数据的批处理
  • 定时备份mysql, 定时切割nginx access log的方法
  • 自动定时备份sqlserver数据库的方法
  • 使用cgroups来限制MySQL企业备份服务对资源的占用

相关文章

  • 2018-12-05MySQL 1303错误的解决方法(navicat)
  • 2018-12-05mssql insert into 和insert into select性能比较
  • 2018-12-05mysql-hibernate整合MySQL,出现异常
  • 2018-12-05mysql-VS2015连接MySQL数据库的问题
  • 2018-12-05关于MySQL应该学习的6件事
  • 2018-12-05Oracle 10g与11g中的一个函数wmsys.wm_concat 的不同返回值
  • 2018-12-05MySQL实现按指定字段自定义列表排序的详细介绍
  • 2018-12-05MSSQL 删除数据库里某个用户所有表里的数据
  • 2018-12-05全面了解MySql中的事务_MySQL
  • 2018-12-05MySQL Order By用法分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 详解mysql中url时区的陷阱该如何规避
    • 有关下载zip的文章推荐10篇
    • oracle 11g RAC 常用命令整理分享
    • MySQL实现同时查询更新同一张表的实例分析
    • linux mysql 安装与操作
    • SQLServer中master数据库分析
    • MySQL之-服务器保持与MySQL的连接详解(图)
    • 利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享
    • mysql delete limit 使用方法详解
    • 用MySQL函数清除字符串首尾空白字符的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有