老板让我每天把数据从Mac 服务器拷贝到一个windows的备份服务器上,拷贝结束后需要自动发送一个email通知结果。这个小项目实现起来很简单,我可以用rsync 在mac服务器或者robocopy 在windows上实现。因为Mac上发送邮件更复杂,所以我选择了robocopy。


MAC 服务器:NZAKL1MAC00

WINDOWS 服务器: NZAKL1BKM01


脚本如下:

【robocopy.bat】


robocopy.exe "\\nzakl1mac01\DATA\finished data" "\\NZAKL1BKM01\archive$\NZAKL1MAC00\finished data" /mir /r:0 /LOG+:"N:\nzakl1mac00\log.txt"


这个脚本会从对应mac的smb共享文件夹拷贝完全镜像过来,当然也可以根据自己的需求更改参数。然后将日志写入N:\nzakl1mac00\log.txt 中。请注意运行账号有足够权限访问mac和windows。


然后创建第二个命令脚本

【change_name.bat】


ren N:\nzakl1mac00\log.txt log_%date:~4,2%%date:~7,2%%date:~12,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt


这个脚本会将log.txt文件重命名为log_当前时间.txt,这样的好处是每天的日志文件一目了然。


最后新建一个计划任务,选择每晚8点触发,具体的操作栏添加3步,第一步运行robocopy.bat进行拷贝, 第二步发送一个邮件给我自己,附件为log.txt, 最后一步运行change_name.bat更改log名称。

如果所在的windows 服务器不在域内无法直接发送邮件,可以下载一个叫做sendemail的命令行工具发送,经测试也是工作的。