自动压缩并拷贝数据库备份至备份机器

本文记录在局域网机器上拷贝数据库备份等文件,实现双机备份重要文件,使得数据安全又上一个台阶,同时自动对大文件进行压缩,节省时间和空间。本例依赖7z工具进行文件压缩,目录“D:\Auto_Copy_Backup_Temp”为自动压缩文件存储目录,大体思路是:

  1. 使用“del”命令删除临时目录的所有压缩后的文件;
  2. 获取当前系统时间作为压缩文件文件名;
  3. 找到所有备份文件并用7z工具压缩;
  4. 拷贝压缩文件到目标目录;
  5. 将本脚本添加到系统任务计划程序中,在数据库备份计划后执行。

共享目录:”destinition=\ip\TZIWB_DB_Backup\”需要提前在另外一台机子上(备份机器)创建,并在本机上映射为共享目录。

脚本代码如下:

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
39
40
41
42
43
44
45
46
47
48
49
50
51

rem auther:yangxiaomin
rem date:20190319
rem ******auto copy start********
@echo off

rem 删除临时目录下的所有压缩文件
del /f /s /q "D:\Auto_Copy_Backup_Temp\*.*"

rem 获取当前系统时间,形如:"2019-03-19-16-10-23"
set "Ymd=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%-%time:~6,2%"

rem 删除系统时间中的空格,形如:"2019-03-19-0-00-00"
set "today=%Ymd: =%"

rem 压缩命令目录,本例使用7z工具压缩
set "Zip=D:\Program Files\7-Zip\7z.exe"

rem 拷贝到局域网的其他机器ip及共享文件夹
set "destinition=\\ip\TZIWB_DB_Backup\"

rem 如果需要在共享目录下按照子目录的方式存储,则使用以下命令自动创建子目录,例如按照日期创建子目录
rem "destinition=\\ip\TZIWB_DB_Backup\%today%"
rem if not exist %destinition% (
rem md %destinition%
rem )

rem 找到业务数据库的最新备份
SET "DatabaseBackupPath_Product=D:\SQLSVRDATA\Backup\TZIWB_Product"
FOR /F "delims=|" %%I IN ('DIR "%DatabaseBackupPath_Product%\*.bak" /B /O:D') DO SET NewestProductFile=%%I

rem 找到job数据库的最新备份
SET "DatabaseBackupPath_ProductJobs=D:\SQLSVRDATA\Backup\TZIWB_Product_Jobs"
FOR /F "delims=|" %%I IN ('DIR "%DatabaseBackupPath_ProductJobs%\*.bak" /B /O:D') DO SET NewestProductJobsFile=%%I

rem 找到普元工作流数据库的最新备份
SET "DatabaseBackupPath_PrimetonBps=D:\MySQLDATA\Backup\primeton_bps_product"
FOR /F "delims=|" %%I IN ('DIR "%DatabaseBackupPath_PrimetonBps%\*.sql" /B /O:D') DO SET NewestPrimetonBpsFile=%%I

rem 找到工作流审核数据库的最新备份
SET "DatabaseBackupPath_TzwfBps=D:\MySQLDATA\Backup\tzwf_bps_product"
FOR /F "delims=|" %%I IN ('DIR "%DatabaseBackupPath_TzwfBps%\*.sql" /B /O:D') DO SET NewestTzwfFile=%%I

rem 使用7z工具压缩以上四个数据库备份文件
"%Zip%" a "D:\Auto_Copy_Backup_Temp\%today%.zip" "%DatabaseBackupPath_Product%\%NewestProductFile%" "%DatabaseBackupPath_ProductJobs%\%NewestProductJobsFile%" "%DatabaseBackupPath_PrimetonBps%\%NewestPrimetonBpsFile%" "%DatabaseBackupPath_TzwfBps%\%NewestTzwfFile%"

rem 拷贝上一步压缩的文件到目标目录
copy "D:\Auto_Copy_Backup_Temp\%today%.zip" "%destinition%"

@echo on
rem ******auto copy end********

至此,备份机存储了所有压缩后的文件,若原始机器空间不足,可放心删除备份文件。基于此,可进行以下两处扩展:

  1. 可在脚本头部集成自动备份数据库的脚本;
  2. 可在目标目录添加监控程序,如果备份不存在则短信提示。
感谢您的阅读,本文由 Gavinhome Blog 版权所有。如若转载,请注明出处:Gavinhome Blog(http://gavinhome.github.io/2019/03/31/自动压缩并拷贝数据库备份至备份机器/
搭建Hexo静态资源博客