新建ROSBAK2.0项目(正式上线)

可以根据这个自建FTP服务器,然后自动备份。参考如下代码。

因Mikrotik从6.45开始支持SFTP传输文件。


ROSBAK2.0 项目已实现以下功能:
1.使用 golang 编写和 json 数据库完成 SFTP 和认证功能。
2.支持按 SFTP 用户自动划分存储目录。
3.支持限制用户文件数量、存储容量,存储天数。(超出限制将禁止新的上传文件。)
4.添加自动注册接口,在脚本中直接使用即可完成用户创建。
5.对提交的参数进行正则式白名单过滤,防止注入。
6.自动回传用户状态信息到ROS日志。
7.支持全局用户数限制。


ROS脚本(设置定时循环运行,建议1天一次)
  1. ###账号不存在则会自动注册,无需担心###

  2. ###定义WEB服务器端口###

  3. :global webport 2220

  4. ###定义SFTP服务器IP地址###

  5. :global ftpip bak.ros6.com

  6. ###定义SFTP服务器端口###

  7. :global ftpport 2210

  8. ###定义SFTP服务器用户名(5-32位字符,请自行修改)###

  9. :global ftpu test123

  10. ###定义SFTP服务器密码(5-32位字符,请自行修改)###

  11. :global ftpp test123

  12. ###定义备份文件密码(请自行修改)###

  13. :global backpw "mima123"

  14. ###设备名称(请自行修改,关联存储的备份文件名称)###

  15. :global rname "ros6"

  16. ###开启服务状态日志(yes/no)###

  17. :global recvlog "yes"

  18. ###开始工作勿改###

  19. /file remove [find name~"_auto.backup"]

  20. :do [/tool fetch url=("https://".$ftpip.":".$webport."/act=get&user=".$ftpu."&pass=".$ftpp) keep-result=$recvlog dst-path=rosbak.log]

  21. :delay 5s

  22. :if ([/file find name="rosbak.log"] !="") do={:log warning [/file get [find name="rosbak.log"] contents];/file remove [find name="rosbak.log"]}

  23. :global taa 0

  24. :global nowmonth

  25. :global allmonth jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec

  26. :foreach lizi in=[$allmonth] do={

  27. :if ([:pick [/system clock get date] 0 3]=$lizi) do={

  28. :set nowmonth ($taa+1)}

  29. :set taa ($taa + 1)}

  30. :global aa ([:pick [/system clock get date] 7 11].$nowmonth.[:pick [/system clock get date] 4 6]);

  31. ###开始备份###

  32. /sys backup save name=($aa."_auto") password=$backpw encryption=aes-sha256

  33. :delay 10s

  34. ###开始上传到FTP服务器###  

  35. :do [/tool fetch url=("sftp://".$ftpip.":".$ftpport."/backup/".$aa."_".$rname."_auto.backup") src-path=($aa."_auto.backup") user=$ftpu password=$ftpp upload=yes]

 
更新时间:2020.11.22
更新内容:新增全局用户数限制,用户注册控制。
 
更新时间:2020.11.16
更新内容:修复已发现的所有BUG。