客户需要对网站进行定期备份,并保留最近30天的文件,编写后以下脚本,通过Windows的任务计划进行调度
对比手工和任务计划调度运行情况来看,手工运行中可直接调用RAR.exe和网络进行传输,但是任务计划调度则需要调用安装RAR的程序并且无法进行网络进行传输
:: 用于备份网站文件
rem ***********************需要配置***********************************
rem 设置需要备份目录
set sourcePath=D:\esa_app\ekp-j\ekp
rem 存放压缩文件远程服务器地址、用户名和密码
set remoteServerPath=10.164.117.75
set remoteUserName=administrator
set remotePassword=admin12345!
rem 远程服务器存放备份文件目录
set remoteTargetPath=d$\ekp_back
rem 压缩程序路径
set rarProgExePath="C:\Program Files (x86)\WinRAR\RAR.exe"
rem ****************************************************************
rem 临时备份目录存放目录
set workRootPath=D:\$$TEMP_EKP_BACK
rem 备份保留份数
rem set backupNumber=30
set backupNumber=5
rem 形成备份文件名称和存放路径
set workFileName=ekp%date:~0,4%%date:~5,2%%date:~8,2%
set backWorkPath=%workRootPath%\%workFileName%
set strBatCurrPath=%cd%
rem 创建备份工作目录
if not exist %workRootPath% md /s /q %workRootPath%
if exist %backWorkPath% rmdir /s /q %backWorkPath%
md %backWorkPath%
rem 把源文件拷贝到工作目录中
xcopy %sourcePath% %backWorkPath% /s /e /h /y >%workRootPath%\log_backup_ekp%date:~0,4%%date:~5,2%%date:~8,2%.log
rem 压缩文件
cd/d "%backWorkPath%\"
%rarProgExePath% -y a "%backWorkPath%.rar" -r *
rem 把压缩文件传送到远程服务器进行备份
net use \\%remoteServerPath% %remotePassword%/user:%remoteUserName%
xcopy /y "%backWorkPath%.rar" \\%remoteServerPath%\%remoteTargetPath%
rem 在远程服务器保留最新文件,份数按照设置进行保留
for /f "skip=%backupNumber% delims=" %%i in ('dir /s /b /o-d \\%remoteServerPath%\%remoteTargetPath%\*.rar') do del /f /q "%%i"
rem 删除工作目录和压缩文件
cd/
rmdir /s /q %backWorkPath%
del /f /q "%backWorkPath%.rar"
作者:石山园