使用批处理进行数据备份
背景
运维组内部有一个服务器日志的离线备份需求:
- Filebeat将日志打到一个WindowsServer的SMB共享上,然后要通过FTP的形式在办公环境进行离线备份;
- 要在生产环境备份服务器上保留14天以防线下备份失效;
方案
- 生产环境备份服务器提供相应文件夹共享,并开放权限;
- 建立计划任务,定时打包实现文件备份转储以及删除超过14天的备份文件;
- 线下建立离线存储服务器,同步FTP数据到加密磁盘
- 线下磁盘的定期轮转和永久存储
脚本
- 基于时间的命名备份方案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20@echo off
::该脚本已被放弃,原因是备份源文件的日期和打包备份日期相差4天,导致题不对版
::设置7z的命令行程序路径
set zip7=C:\Program Files\7-Zip\7z.exe
::设置压缩包保存路径
set Save=D:\temp
::当天日期,备份文件名
set curdate=%date:~0,4%-%date:~5,2%-%date:~8,2%
::设置要打包压缩的文件夹
set Backup=D:\AllLogsBackup\*
::备份命令 无压缩只存档,压缩完成后删除
::备份密码为 #IHte9tE90bYgJjxtYNmD
"%zip7%" a -tzip "%Save%\logs_%curdate%.zip" "%Backup%" -mx0 -sdel -p#IHte9tE90bYgJjxtYNmD
::删除超过14天的备份--start--
forfiles /p "%Save%" /m *.zip -d -14 /c "cmd /c del /f @path" - 基于目标文件夹下文件名进行的备份方案
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19@echo off
:: 因备份文件目录名就为文件产生日期,且因线下同步完成之后会删除,即备份目录下只有一份备份文件夹,所以采用文件名作为备份名称。
::设置7z的命令行程序路径
set zip7=C:\Program Files\7-Zip\7z.exe
::设置压缩包保存路径
set Save=D:\temp
::设置要打包压缩的文件夹
set Backup=D:\AllLogsBackup$\*
::备份文件名
for /f "delims=" %%i in ('dir /b D:\AllLogsBackup$') do set filename=%%i
::备份命令 无压缩只存档,压缩完成后删除
"%zip7%" a -tzip "%Save%\%filename%.zip" "%Backup%" -mx0 -sdel
::删除超过14天的备份--start--
::forfiles /p "%Save%" /m *.zip -d -14 /c "cmd /c del /f @path"
离线备份
- 使用Windows Server作为备份环境,挂载4块硬盘进行备份(使用bitlock加密磁盘,不做Raid);
- 使用FreeFileSync建立同步批处理文件,并加入计划任务定期执行;
- 每周人工巡检,定期手动更替备份目标路径。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.