Ultranti

春寒料峭,冻刹年少。

Windows 下脚本实现 WinRAR 压缩文件并自动上传 FTP 备份服务器

Rhysn's Avatar 2020-06-17 脚本

  1. 1. 备份压缩
  2. 2. FTP 文件传输
  3. 3. 删除本地备份文件
  4. 4. 完整脚本

单位做了两年多的异地容灾项目依然未能成功落地,结果遭遇了数据库备份服务器的故障退役,临时由应用服务器代替,目前的状态就是每天通过应用服务器完成数据库的全局导出,备份在本地,每隔一段时间人为清理一遍旧备份保证应用服务器的磁盘容量。

基于现状,可以通过脚本压缩每天的备份文件,再将压缩文件传输到特定 PC 机(成本低廉)上,删除应用服务器上的备份文件来减少空间的占用。

备份压缩

整体服务器都是跑在 Windows Server 之上的,所以备份压缩就选用了 WinRAR 实现。备份文件包含 dmploglts 三个文件,文件命名规则为 DAYODB 前缀加当日日期。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
rem 指定数据库备份文件所在目录
set DIRECTIONPATH=D:\database

rem 设置备份文件前缀
set FILENAME=DAYODB

rem 拼凑当日日期,例如:20200617
set TIMESTYLE=%date:~0,4%%date:~5,2%%date:~8,2%

rem 指定当日的三个备份文件地址,拼凑dmp、log、lts三个文件完整地址
set FILEPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.dmp
set LOGPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.log
set LSTPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.lst

rem 指定压缩文件地址
set RARPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.rar

使用 WinRAR 压缩文件

1
2
3
4
5
rem 指定WinRAR地址
set RAR_CMD="C:\Program Files\WinRAR\WinRAR.exe"

rem 使用WinRAR压缩备份文件
%RAR_CMD% a -df "%RARPATH%" "%FILEPATH%" "%LOGPATH%" "%LSTPATH%"

FTP 文件传输

创建 FTP 传输命令文件databaseftp.txt,默认保存在当前目录下。

1
2
3
4
5
6
7
8
rem 打开192.168.1.1:33,根据实际FTP配置进行设置
(echo open 192.168.1.1 33
rem 指定FTP用户名及密码
echo administrator
echo 159
rem 上传目标文件,%RARPATH%由前一部分压缩部分指定
echo put %RARPATH%
echo bye)>databaseftp.txt

调用生成的命令文件,完成文件上传,databaseftp.txt 为上面写入的文件。

1
ftp -i -s:databaseftp.txt

删除本地备份文件

1
del "%RARPATH%"

完整脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@echo off

set RAR_CMD="C:\Program Files\WinRAR\WinRAR.exe"

set DIRECTIONPATH=D:\database

set FILENAME=DAYODB

set TIMESTYLE=%date:~0,4%%date:~5,2%%date:~8,2%

set FILEPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.dmp

set LOGPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.log

set LSTPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.lst

set RARPATH=%DIRECTIONPATH%\%FILENAME%%TIMESTYLE%.rar

echo 压缩备份文件,请稍等......

echo ============================================

%RAR_CMD% a -df "%RARPATH%" "%FILEPATH%" "%LOGPATH%" "%LSTPATH%"

echo 压缩完成!

(echo open 192.168.110.22 33523
echo administrator
echo 159
echo put %RARPATH%
echo bye)>databaseftp.txt

echo 异地传输
ftp -i -s:databaseftp.txt
del databaseftp.txt

echo 上传完成,删除本地文件
del "%RARPATH%"

Author : Rhysn
This work is licensed under a CC BY-NC-SA 4.0 International License.
Link to this article : https://ultranti.com/article/windows_database_backup_ftp_script/

This article was last updated on days ago, and the information described in the article may have changed.
Loading comments…