≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > MySQL

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

人气:414 时间:2020-07-09

这篇文章主要为大家详细介绍了在Windows主机上定时备份远程VPS(CentOS)数据的批处理,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编小韵来看看吧!

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

根据这一篇文章的介绍,添加一个定时执行的计划任务;
手动执行一下上面添加的计划任务或观察一个执行周期,看备份是否有效。
待改进
同之前的脚本一样,似乎还缺少一个自动删除多少天前备份的功能。

本文来自:http://www.q1010.com/177/10233-0.html

注:关于在Windows主机上定时备份远程VPS(CentOS)数据的批处理的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:MYSQL

您可能感兴趣的文章

  • 解决 phpmyadmin #2002 无法登录 MySQL 服务器
  • Windows下实现MySQL自动备份的批处理(复制目录或MySQLdump备份)
  • MySQL服务器查询慢原因分析与解决方法小结
  • 对于MySQL的query_cache认识的误区
  • MySQL ORDER BY 的实现分析
  • MySQL Order By索引优化方法
  • MySQL Order By用法分享
  • MySQL字符集 GBK、GB2312、UTF8区别 解决MySQL中文乱码问题
  • MySQL中合并两个字段的方法分享
  • MySQL里实现类似SPLIT的分割字符串的函数
上一篇:自用MySQL自带命令实现数据库备份还原的方法
下一篇:MySQL服务器查询慢原因分析与解决方法小结
热门文章
  • mysql 修改character_set_server为utf-8的简单示例
  • 解决MySQL丢失文件localhost.localdomain.pid、mysql.sock的示例
  • MySQL 数据类型binary和varbinary的简单示例
  • MySQL:reading initial communication packet问题解决方法
  • MySql 表类型MYISAM、InnoDB区别
  • bash: mysql: command not found 的解决方法
  • MYSQL默认用户名ROOT修改方法
  • MySQL 常用命令菜鸟教程
  • MySQL 使用命令行新建用户并授予权限
  • MySql 数据库物理文件存放位置查看示例
  • 最新文章
    • MySQL查看死锁与解除死锁的简单示例
    • MySQL 慢查询的功能实例
    • MySQL查看死锁与去除死锁的简单示例
    • MySQL找出未提交事务的SQL的简单示例
    • MySQL锁阻塞的的简单示例
    • MySQL中的binary类型使用操作的示例
    • SQL优化教程之in与range查询的简单示例
    • MySQL 的 21 个规范、优化最佳实践!
    • MySQL 字符类型大小写敏感的简单示例
    • 解决mybatis-plus分页传入参数后sql where条件没有limit分页信息的问题

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。