Windows使用批处理实现备份机制

什么是rsync?

rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用。本文主要讲述的是如何自架rsync服 务器,以实现文件传输、备份和镜像。相对tar和wget来说,rsync 也有其自身的优点,比如速度快、安全、高效。

预装环境

系统已经安装好 rsync 客户端、服务端,以及安装了rar压缩软件,获取安装包方法,文章结尾有说明。

实现网站的自动化运维(备份)

备份的主要有三大块:代码、公共文件(图片)、数据库。
备份的思路:

  1. 首先备份一份到本地目录;
  2. 然后通过rsync同步到远程服务器;
  3. 添加定时任务,周期性的执行。

备份代码脚本

代码占用空间不大,所以每天做全量备份。

code_all_back.bat
@echo off
@echo ###################################################################
@echo # 2018-xx-xx
@echo # 每天0点之后全量备份前一天的代码
@echo ###################################################################

rem 获取前一天的日期
call lastday.bat arg1
set LASTDAY=%arg1%
set TODAY=%date:~0,4%%date:~5,2%%date:~8,2%

rem code主目录
set CODEDIR=D:\web

rem 备份目录
set BPD=E:\backups\code
set BACKDIR=%BPD%\%LASTDAY%

rem 日志文件
set LOGFILE=E:\backups\logs\code-all-back.log

@echo %date% %time% code-all-back backup start >> %LOGFILE%
@echo backdir : %BACKDIR% >> %LOGFILE%

rem 创建备份目录
mkdir %BACKDIR%

rem 备份目录
rem /EXCLUDE:参数是跳过哪些目录
xcopy /e /c /y %CODEDIR% %BACKDIR% /EXCLUDE:list_of_exclusions.txt

rem 压缩目录
"C:\Program Files\WinRAR\rar" a -df -ep1 %BPD%\code-back-%LASTDAY%.rar %BACKDIR%

@echo %date% %time% code-all-back backup finish >> %LOGFILE%

exit;
lastday.bat
@echo off

rem 输出昨天日期

echo Wscript.echo dateadd("d",-1,date)>vbs.vbs
for /f %%a in ('cscript //nologo vbs.vbs') do del vbs.vbs&&set yyyymmdd=%%a
for /f "tokens=1,2,3* delims=// " %%i in ('echo %yyyymmdd%') do set yyyy=%%i&set mm=%%j&set dd=%%k
if   %mm%   LSS   9   set   mm=0%mm%
if   %dd%   LSS   9   set   dd=0%dd%

set "%1=%yyyy%%mm%%dd%"
list_of_exclusions.txt
\public\

备份公共文件(图片)

公共文件增长速度快,占用空间大,所以采用rsync来实现每天增量备份。

public_inc_back.bat
@echo off
@echo ###################################################################
@echo # 2018-xx-xx
@echo # 每天0点之后增量同步前一天的公共文件
@echo ###################################################################

rem 每一次同步,都会去遍历整个目录,后面如果图片目录数据大了,消耗资源太大,还需要对代码进行优化,按需同步

C:
cd C:\Program Files (x86)\cwRsync\bin
rsync.exe -av /cygdrive/d/web/public /cygdrive/e/backups/public

exit;

增量备份数据库

每天对mysql数据库进行增量备份,需先开启log-bin。

mysql_inc_back.bat
@echo off
@echo ###################################################################
@echo # 2018-xx-xx
@echo # 每天0点之后增量备份前一天的数据库
@echo ###################################################################

rem 获取前一天的日期
call lastday.bat arg1
set LASTDAY=%arg1%
set TODAY=%date:~0,4%%date:~5,2%%date:~8,2%

rem mysql主目录
set MYSQLDIR=D:\mysql-5.6.39-winx64
set LOGBINDIR=D:\mysql-5.6.39-winx64\data\log-bin

rem 备份目录
set BPD=E:\backups\mysql\day
set BACKDIR=%BPD%\%LASTDAY%

rem 日志文件
set LOGFILE=E:\backups\logs\log-bin-back.log

set USERNAME=root
set PASSWORD=root

@echo %date% %time% Incremental backup start >> %LOGFILE%
@echo backdir : %BACKDIR% >> %LOGFILE%

rem 创建备份目录
mkdir %BACKDIR%

rem 刷新增量文件
%MYSQLDIR%\bin\mysqladmin -u%USERNAME% -p%PASSWORD% flush-logs

rem 备份昨天的增量文件
for %%a in (%LOGBINDIR%\*.*) do (
   for /f "skip=1 tokens=1-3 delims=-/ " %%b in ('dir /tc "%%a"^|findstr ":"') do (
      if "%%b%%c%%d" == "%LASTDAY%" xcopy /e /c /h /y %%a %BACKDIR%
   )
)

rem 压缩目录
"C:\Program Files\WinRAR\rar" a -df -ep1 %BPD%\mysql-bin-%LASTDAY%.rar %BACKDIR%

@echo %date% %time% Incremental backup finish >> %LOGFILE%

exit;

全量备份数据库

mysql_all_back.bat

每周对mysql数据库做全量备份。

@echo off
@echo ###################################################################
@echo # 2018-xx-xx
@echo # 每周全量备份前一周的数据库
@echo ###################################################################

rem 获取前一天的日期
call lastday.bat arg1
set LASTDAY=%arg1%
set TODAY=%date:~0,4%%date:~5,2%%date:~8,2%

rem mysql主目录
set MYSQLDIR=D:\mysql-5.6.39-winx64

rem 备份文件
set DOWNDIR=E:\backups\mysql\week
set DOWNFILE=%DOWNDIR%\%LASTDAY%.sql

rem 日志文件
set LOGFILE=E:\backups\logs\log-bin-back.log

set USERNAME=root
set PASSWORD=root

@echo %date% %time% all backup start >> %LOGFILE%
@echo downfile : %DOWNFILE% >> %LOGFILE%


rem 刷新增量文件
%MYSQLDIR%\bin\mysqldump -u%USERNAME% -p%PASSWORD% --all-databases --lock-all-tables --routines --triggers --events --master-

data=2 --flush-logs > %DOWNFILE%

rem 压缩目录
"C:\Program Files\WinRAR\rar" a -df -ep1 %DOWNDIR%\mysql-dump-%LASTDAY%.rar %DOWNFILE%

@echo %date% %time% all backup finish >> %LOGFILE%

exit;

同步到远程目标主机上

rsync.bat
@echo off
C:
cd C:\Program Files (x86)\cwRsync\bin
rsync.exe -av /cygdrive/e/backups/ administrator@192.168.1.100::backups --port=1220 --password-file=/cygdrive/c/Users/administrator/Documents/backups/administrator.pass < C:\Users\administrator\Documents\backups\administrator.pass

exit;
administrator.pass
abc123!@#

集合脚本

start_rsync.bat

在集合脚本中周期性控制其他脚本的执行。

@echo off 

set DIR=C:\Users\administrator\Documents\backups

rem 全量备份代码
start /wait /D %DIR% call code_all_back.bat

rem 增量备份图片
start /wait /D %DIR% call public_inc_back.bat

rem 增量备份数据库
start /wait /D %DIR% call mysql_inc_back.bat

rem 每周六全量备份数据库
if %date:~-3%==周六 (
	start /wait /D %DIR% call mysql_all_back.bat
)

start /wait /D %DIR% call wzqf.bat

计划任务

加入计划任务中,让其每天0点过后执行即可。
1)运行->输入compmgmt.msc打开计算机管理。
在这里插入图片描述
2)右键任务计划->创建任务,如下设置,完成确定即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源码包下载链接:https://download.csdn.net/download/weixin_38642130/10874512

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值