使用批处理进行数据备份
背景
运维组内部有一个服务器日志的离线备份需求:
- Filebeat将日志打到一个WindowsServer的SMB共享上,然后要通过FTP的形式在办公环境进行离线备份;
- 要在生产环境备份服务器上保留14天以防线下备份失效;
方案
- 生产环境备份服务器提供相应文件夹共享,并开放权限;
- 建立计划任务,定时打包实现文件备份转储以及删除超过14天的备份文件;
- 线下建立离线存储服务器,同步FTP数据到加密磁盘
- 线下磁盘的定期轮转和永久存储
脚本
- 基于时间的命名备份方案
@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"
- 基于目标文件夹下文件名进行的备份方案
@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 in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.