那啥,昨天沒更新內容是因為前天晚上搞程序把Router OS的路由器給玩崩了。
看上圖,明明要去這里卻被路由器指向了那里,搞不明白的還以為互聯網兩大巨頭合并了呢。
折騰了快半天的時間,Router OS的路由器恢復。
這時候想了一個問題,干嘛我不給路由器的設置備個份呢?iN的路由器從2020年架設起來其實就沒什么大動。
期間就簡單的修修補補的改變一些設置。以至于昨天路由器崩了之后大大小小幾十個設置項目都得重新設置一遍,有的時候這的確很讓人覺得折手。看了路由器的存儲空間,里面最晚的備份項目也是三年前的了。幾乎不能恢復,重設排查等一系列操作還不如從頭弄個一個裸金屬設置呢。
設置完也是下午3點多了,那么有了這次教訓,還是要討論下備份的必要性了。一般的來說一個路由器基本上設置后就不會再做修改了,通常可以穩定的運行幾年甚至十幾年,備份在路由器上的價值并不是特別大。但對于家庭用戶來說,我們的各種修改和配置幾乎是不斷的。有的時候崩潰性事件的發生還是更依賴于備份的配置回滾。
在Router OS上做備份這個操作很簡單,只需要直接在命令行運行/system backup 就可以在文件存儲區生成當前系統的備份。或者用 /export命令也可以將所有的設置參數導出成腳本配置文件。
只不過,這兩個命令都需要手動的執行。雖然Router OS中有計劃任務的設定。我們也可以為Router OS生成基于時間戳的備份任務。但通常路由器的存儲空間比較有限,這就會導致過一段時間,備份文件會填滿存儲空間,回頭手動刪除其實也是很麻煩和耗費精力的事情。
那么怎么做呢?
寫腳本來處理,這個處理有幾個要點可以和大家說說。
第一、為了避免路由器內的備份文件充滿存儲空間,因此采用了覆蓋性的備份機制。只備份一周內的路由器設置,每個weekday的設置進行相互覆蓋。最終在路由器上只會生成AutoBackup-0~6這七個備份文件。
當然了,我們可以在腳本里設定 :local day daynum % 7,這個7其實就是備份的數,會返回0-6之間的整數,如果想設置半個月的話,可以將 7 換成15。再改改后面的程序就可以了
第二、為了讓0~6和真正的星期幾進行對應,這就涉及到了日期-星期算法,不過Router OS的腳本里面沒有這個現成的函數,所以自己寫一個,這也就是weekday (($dayNum + 6 + ((13 * ($monthNum + 1)) / 5) + $K + ($K / 4) + ($J / 4) + (5 * $J)) % 7)生成weekday的機制了
第三、就是覆蓋在ROUTER OS中backup生成的文件如果之前不存在的話會直接生成,如果之前存在的話會直接覆蓋。所以利用這個機制和上面的算法我們就可以保證文件區域最多只有7個文件存在,這樣就可以免去日后不斷的刪除備份文件的困擾
下面就是備份的整個腳本了,在系統-腳本中保存一下就可,iN在這里給腳本起了一個名字叫做AutoBackup
:local date [/system clock get date]:local firstDashPos [:find $date "-"]:local secondDashPos [:find $date "-" ($firstDashPos + 1)]:local year [:pick $date 0 $firstDashPos]:local month [:pick $date ($firstDashPos + 1) $secondDashPos]:local day [:pick $date ($secondDashPos + 1) [:len $date]]:local yearNum [:tonum $year]:local monthNum [:tonum $month]:local dayNum [:tonum $day]:if ($monthNum < 3) do={:set yearNum ($yearNum - 1):set monthNum ($monthNum + 12)}:local K ($yearNum % 100):local J ($yearNum / 100):local weekday (($dayNum + 6 + ((13 * ($monthNum + 1)) / 5) + $K + ($K / 4) + ($J / 4) + (5 * $J)) % 7):local backupName ("AutoBackup-" . $weekday . ".backup"):log info ("Backup file name is: " . $backupName)/system backup save name=$backupName
今天早起看了下,已經在文件區域生成了兩個備份文件,一個是昨天調試的,第二個是自動生成的。
對應的日期也是 0代表周日,6代表昨天的周六、明天早上還會生成一個-1代表周一的備份文件。
腳本做好之后,你要做的就是在計劃任務中調用這個腳本。路徑系統-計劃任務
在任務窗口中設定開始時間和執行間隔就可以讓腳本程序在計劃的時間內運行起來
在On Event中輸入腳本名稱“AutoBackup”。這件事就算是做完了。
這只備份方法沒啥用處,比較符合咱們“無用技”的欄目特色。但可以保證Router OS用戶只要路由器硬件不壞掉,總是有機會恢復一周內任意天的路由器配置信息,可以圖個安心。
那如果路由器壞掉了都登錄不進去了咋辦?這些配置備份信息就廢掉了嗎?
其實還可在腳本中加一條/tool sendmail 把當天的配置文件發到自己郵箱里面去。當然了,這個對于iN來說必要就不大,于是沒寫進去。如果你覺得每天都會在電子郵件里面收到配置文件很煩,也可以酌情的用if判斷,例如 if weekday= 0 ,只發送周日的備份文件。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.