前段时间折腾了一个 SQL Server 数据库异地备份解决方案,使用了一些不够完美不够和谐的方法完成了设计需求。昨天看到一款软件叫做 NcFTP,经过思考,有了下面的优化方案。

原先的方案需要在双方服务器上安置批处理并加入计划任务,他们之间的先后顺序是没有握手联系的,只能依靠时间来排序。最佳途径应该还是只在一台服务器上安置批处理。原先需要在备份服务器上通过 curl 来 pull 当天的备份,现在有了 NcFTP,我们可以让数据库服务器主动 push 备份文件到备份服务器上。

@set ftp_ip=0.0.0.0
@set ftp_port=1234
@set ftp_user=this_is_ftp_user
@set ftp_passwd=this_is_ftp_passwd
@set ncftp_path=C:/Program Files/NcFTP

"%ncftp_path%ncftpput.exe" -u %ftp_user% -p %ftp_passwd% -P %ftp_port% %ftp_ip%/tmp.rar
而删除备份服务器上的旧备份文件,也可以抛弃 Henry Xu 同学用 C++ 写的程序了,可以使用 Resource kit 里的命令 FORFILES。

@set this_year=%date:~0,4%
@set this_month=%date:~5,2%
@set today=%date:~8,2%
@set local_store_path=E:\Backup\files
@set local_file_ext=rar

FORFILES /P %local_store_path% /D -7 -M %this_year%-%this_month%-%today%.%local_file_ext% /C "cmd /c del @file"
这样一来,这个方案就更加温柔了一点。但是 NcFTP 的 Windows 版本需要安装,不是绿色软件,对于我等有洁癖的孩子来说,只能忍痛割爱了。

标签: sql, backup, bat, ftp

添加新评论