從 windows 上進行每日異動檔案備份

Windows Command 失敗的案例

有一台提供備份的 Windows 主機,主要提供的工作設想為:根據備份對象當天異動的所有檔案進行複製

  1. 在備份資料夾新增當天日期資料夾
  2. 搜尋備份對象所有當天異動檔案,並複製到當天資料夾內
一開始只打算使用 DOS Command 也就是最基礎的指令設計,摸索了一下,寫了下面這個批次檔:

決定使用 windows batch file 是錯誤的決定,因為來源檔案有重複檔名,因此需要加上一個流水碼避免覆蓋。如果使用 xcopy 指令搜尋符合日期檔案複製,那就無法進行檔名的變更,最後我又使用 PHP 處理。

PHP 程式運作流程

  1. 使用系統指令 DIR 產生所有檔案列表,建立成文字檔
  2. 建立當日備份日期目錄
  3. 解析 DIR 文字檔內容,搜尋符合日期檔案
  4. 將符合檔案加上流水碼複製到日期目錄中
1. 產生所有列表檔案以及生成文字檔

2. 建立當日備份日期目錄

3. 解析文字檔案,找到符合條件檔案

產生的檔案列表格式大致就像下面這樣,不同系統,不同指令參數會得到不同的格式。大致上需要處理的就是

  1. 以 z: 為判讀的「目錄」路徑
  2. 以日期格式開頭的檔案名稱
  3. 以及排除同樣是日期名稱開頭,但是檔名開頭為「 .  」 的目錄敘述

▼ 下面這張圖對於格式的敘述會比較清楚

程式技巧

  • exec() 執行系統指令,這裡使用在
    • 建立資料夾 mkdir
    • 顯示檔案清單 dir
  • dir 指令內的大於符號 > 功能是轉向,在此的作用是將畫面輸出到檔案,因此右邊就是檔案名稱
  • fgets() 一行一行的讀取文字檔案,方便後續資料分析
  • substr() 負責取出路徑及檔案名稱,使用負值是倒數 (從右數到左) 的字不取,-2 是過濾換行 \r\n
  • 預設 DOS 提示字元視窗字碼是 BIG5,所以一個中文字要算 2 個字數

▼完成後就像這樣子

待加強、開發

  • 取用檔案使用 WEB 介面 →  安裝 Apache
  • 將複製來源及備份檔案關聯紀錄,方便取用時確定對象及搜尋 → 安裝 MariaDB,
  • 針對以上需求開發網頁程式

474 total views, no views today

FortiGate – 60 韌體更新 ( 產品過保就沒人性的廠商 )

最近 (2013/5) 網路怪怪的,會有瞬斷的情況,這個情況是從升級光纖網路才開始的 (或是比較明顯)。

通常防火牆、分享器這類資訊設備出問題,第一時間都是更新韌體( firmware ) 後再來釐清問題,沒想到災難開始了。

FortiGate-60 是 2006 年的機器,公司從來沒有買過防毒或是其他的維護、加購合約,要下載新的 firmwave 當然是先到原廠下載,沒想到

  1. 管理介面內下載的網址已經更改
  2. 到新的網站登入會員也找不到下載的地方

到網路上尋尋覓覓了好幾天一直找不到,還好今天在快放棄的時候使用了新的關鍵字搜尋才找到以下這個網站:

Upgrading the firmware on a standalone Fortigate unit or units in an HA cluster | mbrownnyc

關鍵是底下這串 FTP 連接網址 (FortiGate FTP)

這樣就可以進入到官方 FTP 下載所需的 firmware ,從 MR5 一下子衝到 MR7 之後,目前尚未出現硬體錯誤的訊息 (錯誤訊息忘記擷圖了 …)

▼ 更新完成系統擷圖

失效資訊

ftp://pftpintl:F0rt1intl@support.fortinet.com/FortiGate

4,485 total views, 7 views today