本文最后更新于 395 天前,其中的信息可能已经有所发展或是发生改变。
目标
自动创建RouterOS备份文件,并存放至共享文件夹中。理论上说支持iSCSI、NFS、SMB等协议,下面的教程将以SMB为例。
安装扩展
因为RouterOS基础功能是没有挂载网络共享文件夹的,所以首先要安装扩展包ROSE-storage,RouterOS的扩展包可以在MikroTik官网上下载到。
选择下载相应的版本即可。(建议安装的扩展包版本与基础包版本一致)
解压压缩包,把rose-storage-x.xx.x.npk(以及其他需要安装或更新的软件包)直接上传到RouterOS根目录下,重启RouterOS,软件包就安装好了。
校准系统时间
理论上说该步骤不是必须的,但还是建议把系统时间校准。
System -> NTP Client,启用并填入time.cloud.tencent.com
和ntp.aliyun.com
,然后点击Apply,等待一会后当下面出现synchronized
即代表NTP客户端已生效。
然后System -> Clock修改时区为Asia/Shanghai
。
挂载目录
打开Terminal,输入下面的命令挂载SMB目录,其中smb-share是指挂载的SMB目录名,slot是挂载点。
/disk/add type=smb smb-address=192.168.0.2 smb-user=routeros smb-password=12346789 smb-share=backup slot=nas
上面的命令运行后会将smb://192.168.0.2/backup
挂载到nas
目录。
创建脚本
System -> Script中添加一个名叫backup
的新脚本,并填入下面的内容(直接全部复制粘贴可能出现编码问题,建议一行一行复制);其中keepCount
是指最多保留的备份数量(为0则全部保存),path
是备份文件的存放目录。
:local keepCount 5;
:local path "/nas"
:local filenameSuffix "-AutoBackup.backup"
:local fileList [/file/find where name ~ $filenameSuffix]
:local fileCount [:len $fileList]
:set keepCount ($keepCount - 1)
:if ($fileCount >= 1 and $keepCount >= 0 and $fileCount > $keepCount) do={
:for i from=0 to=($fileCount - $keepCount - 1) do={
:local fileToRemove [:pick $fileList $i]
/file remove $fileToRemove
:log info "Removed the backup file: $fileToRemove"
}
}
:local currentDate [/system clock get date]
:local currentTime [/system clock get time]
:local fileDate ([:pick $currentDate 0 4] . [:pick $currentDate 5 7] . [:pick $currentDate 8 10])
:local fileTime ([:pick $currentTime 0 2] . [:pick $currentTime 3 5] . [:pick $currentTime 6 10])
:local filePath ($path . "/" . [/system identity get name] . "-" . $fileDate . "-" . $fileTime . $filenameSuffix)
/system backup save name=$filePath
:log info "Backup file created: $filePath"
保存后在Ternimal内输入
/system/script/run backup
运行后检查Files中是否有备份文件,以及log中的输出。
创建定时任务
System -> Scheduler添加一个新的定时任务,任务内容输入下面的命令
:execute script="backup"
其中Interval是指下次运行脚本的间隔时间。