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

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

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

时间: 2024-11-03 22:25:33

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

crond-centos6.5 定时备份mysql 导出mysql数据大小为0

问题描述 centos6.5 定时备份mysql 导出mysql数据大小为0 centos定时任务 执行mysql数据备份 在/home/www/shell/ 写了个shell脚本 加入执行权限 定时执行的时候 到处的sql文件大小为0 且没有错误log输出 如果单独执行./xxx.sh 导出的sql正常 问题蛮怪 不知道有没有碰到的

linux中自动定时备份Linux VPS/服务器网站文件及数据库且FTP上传至主机空间

第一.安装lftp环境   因为我们在上传FTP文件的时候需要用到lftp环境,不能确保所有的系统中都有已经安装,所以我们最好先重新安装.    代码如下 复制代码 #CentOS yum install lftp #Debian apt-get install lftp   第二.创建备份目录    代码如下 复制代码 /home/backup/   我们需要在VPS中创建备份目录,因为在执行备份的时候,是需要先备份到VPS本地,然后再从本地上传到远端FTP空间中.这个地址我们需要跟下面的脚本

centos定时备份远程FTP文件方法

先说问题.公司现在有2台服务器,都是centos系统,一台本地(局域网),一台则在电信机房.因为工作需要,每天备份机房上的数据到本地,以前一直是FTP登录,然后下载到本地机器.现在则希望,利用本地的centos机器,自动备份到本地. 解决方法如下: 1.下载远程电信机房中机器上已打包好的数据.这个不难,一条语句搞定.  代码如下 复制代码 wget ftp://user_name:password@ip_address:port/dir/file_name 2.定时任务,需要写个脚本,并加入定时

阿里云服务器上定时备份MYSQL数据库配置

一 linux服务器定时备份 第一步新建*.sh文件. 新建在home目录下 autobackupmysql.sh #!/bin/sh # File: /home/mysql/backup.sh # Database info DB_NAME="test" DB_USER="root" DB_PASS="root"   # Others vars BIN_DIR="/alidata/server/mysql/bin" #这里是

在Windows上通过putty远程登录CentOS

目的:在windows上通过putty(或者secureCRT)远程登录centos6.5 硬件:centos6.5服务器一台,windows客户机一台 软件:ssh.putty(或者SecureCRT)   centos6.5端操作步骤 yum install openssh-server 安装过程中,系统会自动配置好,如果找不到包,就更新一下软件源.   更新软件源步骤: 1. 删除之前的更新列表 sudo rm /var/lib/apt/lists/* -rvf   2. 清理一下垃圾:

利用同步精灵每天定时备份自己的网站数据

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 我想每个站长都一样,也有过网站数据丢失.损坏的情况,但自己又没养成天天去备份网站数据的习惯,当然,我也是一样的,所以,我找到了这么一个办法,这个办法是以前我在网络上看到的,但当今天我想再次去找这个文章的时候,却发现已经找不到了,所以,我把自己所操作的过程整理出来,供大家分享. 同步精灵软件设置 我今天要写的就是利用同步精灵这个软件来实现,但还

个人独立博客搭建选择Linux主机还是Windows主机

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 根据目前主机市场的发展来看,特别是随着Windows对于PHP等功能支持不断增强的同时,个人独立博客搭建选择Linux主机还是Windows主机似乎已经不是最重要的.但事实上,这个问题一直以来都是最值得个人站长们有限考虑的.在这里小编就从性价比.稳定性.兼容性.安全性等方面来对二者进行一个对比分析,帮助大家根据自己的需求挑选最合适的独立博客主

SQL Server 2005定时备份设置的2种方法

方法一 SQL Server 2005的定时备份功能很好用,每天定时备份,可以确保数据的安全. 定时备份的设置也很简单,第一步,进入Microsoft SQL Server Management Studio-->管理-->维护计划,新建维护计划.然后设置时间,点击右侧红色叉旁边的三点进行配置,设置完成之后确定即可.再然后,从左侧的"维护计划中的任务"拖动"备份数据库任务"到右侧,双击任务进行设置,选择需要备份的数据库.备份类型和备份地址,最后,保存计划

MySQL数据备份之mysqldump的使用详解_Mysql

mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump file] 上述命令将指定数据库备份到某dump文件(转储文件)中,比如: mysqldump -uroot -p123 test > test.dump 生成的test.dump文件中包含建表语句(生成数据库结构哦)和插入数据的insert语句. B. --opt 如果加上--opt参数则生成的du