• 2

【程式開發筆記】讓電腦定時幫你備份重要資料,「鏡像同步、差異備份」樣樣通,Robocopy - 大漠國渡

前言

大漠開始寫部落格,並拍照紀錄旅遊,就碰上了「照片備份」的問題,於是上網找了開始方法,並免自己一直手動複製資料浪費時間。

看了其他攝影師的方法就是「硬碟外接盒」做「磁碟陣列 RAID 1」 或是「NAS」做「磁碟陣列 RAID 6」的熱備份,而「熱備份」比較消耗硬碟的壽命,結論就是有點燒錢啊 😖

後來發現了 Window 的 Robocopy 也有辦法做「鏡像同步」、「差異備份」,重點是可以「冷備份」延長硬碟的壽命,而且可以也跟「RAID 6」有效率的使用硬碟空間,不會因為「 RAID 1」要備份,有一半的空間無法使用的缺點 😀

那接下來的內容就是範例實作排程設定,還有分享一下大漠幫 Robocopy 寫了一個 UI 介面 (使用者介面),方便自己操作的範例 😎

最後是一些 Robocopy 在「鏡像同步」使用到的參數的說明 😊

前言
一、使用 Robocopy 進行「資料夾」鏡像同步
(一)、範例
(二)、電腦自動執行「鏡像同步」(設定排程)
二、製作成「小工具軟體」範例
三、 Robocopy 指令說明
(一)、「基本指令」說明
1. 「鏡像同步」基本指令
2. 「指令參數」說明
(二)、「進階指令」說明
1. 「鏡像同步」進階指令
2. 「指令參數」說明
(三)、「最終指令」說明 (最推指令)
1. 「鏡像同步」最終指令
2. 「指令參數」說明

一、使用 Robocopy 進行「資料夾」鏡像同步

(一)、範例

先開啟「記事本」。

輸入「Robocopy <你的來源資料夾> <你的目的地資料夾> /mir /xo /e」。

上面是最簡易的指令,習慣操作之後,建議參考「進階指令」和「最終指令」做更詳細的設定 (後頭提供)。

範例 : Robocopy D:\TEST D:\TEST2 /mir /xo /e。

接下來將檔案儲存程「Windows 批次檔案 (.bat)」,「檔名」跟「路徑」就自己決定吧 😁

測試範例 :「TEST」資料夾有 7 個檔案,而「TEST2」資料夾沒有檔案。

可以直接滑鼠雙擊剛剛所建立的「Windows 批次檔案 (.bat)」,執行 Robocopy 進行「鏡像同步 (差異備份)」。

但是大漠想要看 Log,所以就使用「終端機」執行 😋

先到「Windows 批次檔案 (.bat)」,並輸入批次檔案名稱)」,執行 Robocopy 進行「鏡像同步 (差異備份)」。

不會操作「終端機」也沒關西,待會的 「進階指令」會教如何將 Log 輸出成檔案,如不想看 Log 就不要理會這段啦 😆

下圖是執行 Robocopy 的結果 (Log)。

確定「TEST」資料夾下的 7 個檔案,都複製到「TEST2」資料夾下了 😁

(二)、電腦自動執行「鏡像同步」(設定排程)

再來就使用 Windows 內建的「工作排程器」設定排程,來模擬「雲端硬碟」的同步 ,但是沒有即時同步的功能,最少會有 5 分鐘的時間差 😋

先建立新的「排程工作」。

先幫自己的排程命名 ~ (自己取名)

再來最重要的選項「不論使用者登入與否均執行」、「不要儲存密碼」、「以最高權限執行」和「隱藏」都要勾選,不然每次執行排程時,都會有效視窗跑出來吵你 😅

再來就到「處發程序」頁籤,新增「執行的時間」的設定。

選擇「每天」,重複工作每隔 「5 分鐘」,持續時間「不限制」,在確定最重要的「已啟用」有被勾選,最後按下「確定」,完成「執行的時間」的設定。

處發程序」頁籤,就會多一筆資料,這樣一來之後「 5 分鐘」就會自動「鏡像同步 (差異備份)」兩個資料夾了 🎉

再來就到「動作」頁籤,新增「要執行的程式 (指令碼)」的設定。

程式或指令碼,選擇剛剛建立的「Windows 批次檔案 (.bat)」,開始位置填入「批次檔案」的路徑,按下「確定」,完成「要執行的程式 (指令碼)」的設定。

動作」頁籤,就會多一筆資料,在按下「確定」完成所有設定 👍

工作排程器」上就多了一筆工作後,這樣就可以進行測試了 ~

在 12 : 55 時,於「TEST」資料夾下,新增一筆資料「8.jpg」。

5 分鐘後,系統就自動將「8.jpg」複製到「TEST2」資料夾下 🎊

二、製作成「小工具軟體」範例

大漠備份的頻率沒有很高,暫時沒有打算使用排程作鏡像備份,但又為了自己方便操作,於是就大漠幫 Robocopy 寫了一個「圖形使用者介面 (GUI)」😁

其中「鏡像同步」會用到的「進階指令」,大漠也把它加入進「大漠自製的小工具」,雖然不知道甚麼時候會用到,但我相信以後「進階指令」會用到,重點是「看起來比較專業」😂

接下來就演示一下「大漠自製的小工具」操作過程 ~

透過「圖形使用者介面 (GUI)」選擇「來源資料夾」,就不怕輸入錯誤,或者打字打得很累 😆

接續著選擇「目的地資料夾」~

雖然不怕打錯字,但就怕自己選錯囉 😂

所以絕對不要選反,不然要備份的資料,反而被刪除 😖

「log 路徑」就屬於「進階指令」的範圍囉 ~

如果不小心關掉視窗,還有機會再看看「鏡像同步」的狀況 😊

在「TEST」資料夾下,新增一筆資料「9.jpg」。

按下「鏡像同步」開始備份 ~

視窗下面的「執行結果」會顯示原本「執行 Robocopy 的結果」🎉

「TEST2」資料夾下,多了一個資料「9.jpg」,確實完成備份 😎

再來看看「log 檔案」,有出現再大漠指定的「log 路徑」下 👍

「log 檔案」一樣是記錄著「執行 Robocopy 的結果」😏

從「紅框 1」的內容中,可以看出來大漠使用的「鏡像同步」指令。

而 「紅框 2」的內容中,可以看到「Robocopy」發現了一個新檔案「9.jpg」,並有完成備份,執行進度為 100% 😊

三、 Robocopy 指令說明

(一)、「基本指令」說明

1. 「鏡像同步」基本指令

鏡像同步的「基本指令」指令,有以下兩種 :

如果檔案有設定過「安全性設定」,如 : 特定帳號才可瀏覽編輯的設定,就建議使用「第一種指令」,確保複製過後去的檔案也保留這些「安全性設定

如果自己也不清楚的話,還是建議使用「第一種指令」最保險 😆


// 第一種,會覆寫「目的地資料夾」安全性設定。
Robocopy <來源資料夾(檔案)> <目的地資料夾(檔案)> /mir /xo /e

// 第二種,不覆寫「目的地資料夾」安全性設定。
Robocopy <來源資料夾(檔案)> <目的地資料夾(檔案)> /e /xo /purge

2. 「指令參數」說明


/e
複製子資料夾 (包含空的資料夾)

/xo
比較「來源檔案」與「目的地檔案」,若「來源檔案」較新則複製,否則排除不複製 (差異備份,所需參數)

/purge
刪除不存在於「來源資料夾」中的檔案 (差異備份,所需參數)

/mir
鏡像資料夾 (相當於同時使用 /e 和 /purge 參數)。

(二)、「進階指令」說明

1. 「鏡像同步」進階指令

大漠針對了「搬檔效率」、「Log 資訊」需求,又挑選了部分的參數做使用,使其功能更完善 😎

更多參數詳 微軟 Robocopy 學習網


Robocopy <來源資料夾(檔案)> <目的地資料夾(檔案)> /e /xo /mir /mt: /dcopy:dat /xa:sh /xj /unicode /eta /R:5 /W:30 /tee /unilog+:D:\mirrorDir.txt /v

2. 「指令參數」說明


/mt:
使用 n 個執行緒,執行工作。(如同 n 個人一起搬運檔案) 預設值是 8,最上值128。
需搭配使用 /log 參數,集中倒出,提升效能。

/log:
使用系統編碼(Big5)寫入記錄檔。(若記錄檔已存在,覆寫現有的記錄檔)

/log+:
使用系統編碼(Big5)寫入記錄檔。(若記錄檔已存在,接續寫入記錄檔)

/unilog:
使用 UTF-8 編碼寫入記錄檔。(若記錄檔已存在,覆寫現有的記錄檔)

/unilog+:
使用 UTF-8 編碼寫入記錄檔。(若記錄檔已存在,接續寫入記錄檔)

/dcopy:
複製資料夾的內容。
D - 資料
A - 屬性
T - 時間戳記
E - 擴充屬性
X - 略過替代資料流
此選項的預設值為 DA (資料和屬性)。

/xa:[RASHCNETO]
符合以下屬性的檔案不處理。
R - 唯讀
A - 封存
S - 系統
H - 隱藏
C - 已壓縮
N - 未編製內容索引
E - 已加密
T - 暫存
O - 離線

/xj
不複製 NTFS junction 檔案。

/unicode
輸出內容使用 UTF-8 編碼。

/eta
顯示所複製檔案的預估抵達時間 (ETA)。

/r:
複製失敗,重新嘗試的次數,n 的預設值為 1,000,000 (一百萬次重試)。

/w:
複製失敗,重新嘗試的等候時間,以秒為單位,n 的預設值為 30 (等待時間為 30 秒)。

/tee
將狀態輸出寫入主控台視窗及記錄檔。

/v
產生詳細資訊輸出,並顯示所有略過的檔案。

(三)、「最終指令」說明 (最推指令)

1. 「鏡像同步」最終指令


這大漠自己在用的指令,也是最推薦的指令,顧及了「搬檔效率」、「Log 資訊」和「資安疑慮」🚓


Robocopy <來源資料夾(檔案)> <目的地資料夾(檔案)> /e /xo /mir /mt: /dcopy:dat /xa:sh /xj /unicode /eta /R:5 /W:30 /tee /unilog+:D:\mirrorDir.txt /v /xf *.tmp *.ds_store *.temp ~desktop.ini ~hiberfil.sys ~pagefile.sys ~thumbs.db ~swapfile.sys ~NTUSER.DAT ~ntuser.dat.LOG1 ~ntuser.dat.LOG2 $recycle.bin config.msi ntuser.dat ntuser.ini /xd "C:\Windows" "C:\ProgramData\Microsoft\Windows\Caches" "C:\Drivers" "C:\Temp" "C:\Documents and Settings" "*MSOCache*" "*RecycleBin*" "*recycler*" "*System Volume Information*"

2. 「指令參數」說明

避免複製系統的重要檔案,引發資安問題,大漠就使用「/xf」及「/xd」兩項參數,排除了系統「特定檔案」及「特定路徑」。

以下說明有列出排除「檔案」及「路徑」,給大家參考。


/xf [ ...]
符合指定名稱或路徑的檔案,支援使用萬用字元 (* 和 ?)。

*.tmp
*.ds_store
*.temp
~desktop.ini
~hiberfil.sys
~pagefile.sys
~thumbs.db
~swapfile.sys
~NTUSER.DAT
~ntuser.dat.LOG1
~ntuser.dat.LOG2
$recycle.bin
config.msi
ntuser.dat
ntuser.ini

/xd [ ...]
排除符合指定名稱和路徑的目錄。

"C:\Windows"
"C:\ProgramData\Microsoft\Windows\Caches"
"C:\Drivers"
"C:\Temp"
"C:\Documents and Settings"
"*MSOCache*"
"*RecycleBin*"
"*recycler*"
"*System Volume Information*"

工作排程器
差異備份
程式開發筆記
鏡像同步
Robocopy
Window

本文同步發表於:【程式開發筆記】讓電腦定時幫你備份重要資料,「鏡像同步、差異備份」樣樣通,Robocopy - 大漠國渡
「大漠國渡」的「大漠」https://kusdom.com/desertcountrylife
2024-08-26 11:38 發佈
其實NAS還是值得投資的
像我兩台NAS進行異地被份..硬碟用了6~7年了,還沒壞軌,平攤下來並沒有花費太多

資料消失還有快照還原
也不用擔心災難性事件

所有檔案只要丟進資料夾,就自動同步到NAS
手機拍照,就自己上傳NAS...

不過NAS還是需要些有資訊背景的處理,畢竟攻擊事件也很多,要懂得進行防禦
CcCManCcC wrote:
其實NAS還是值得投...(恕刪)
NAS 確實值得投資,很多功能都包辦了
不過起始成本讓很有點卻步

最近的跳電頻傳,也讓人有點擔心

目前 筆電 加 隨身硬碟 (資料還不多 ),配合 Robocopy 使用,暫時覺得最經濟實惠

攻擊事件防範真的太難了,最好的防範是斷網 (因噎廢食...
「大漠國渡」的「大漠」https://kusdom.com/desertcountrylife
文章講的只是資料備份,但 RAID 的用途不是用做資料備份,而是作為資料保護,

做 RAID 的用意是讓硬碟壞掉的時候,不會造成資料損失,故達到保護目的,

所以跟 RAID 扯在一起感覺有點奇怪,保護跟備份是可以同時存在的,

像文章的內容同樣也可以用在具有 RAID 的 NAS 或是儲存裝置上,

但資料備份最保險的方法還是多備幾份,

只備在一個地方關鍵的時候要用才發現壞掉一樣 GG

如果已經備了兩三份在不同的地方,但同時全壞的話,建議去包牌大樂透
大漠國渡 wrote:
最近的跳電頻傳,也讓人有點擔心


搭配 UPS (不斷電系統) 使用就沒問題了,我自己就是自組 NAS + UPS,

已經遇過停電很多次了,搭配 UPS 軟體的話還可以做到 UPS 快沒電的時候自動關機,

目前 NAS 還沒因為停電而突然斷電過
Star Kfeirchris wrote:
文章講的只是資料備份...(恕刪)
是的「磁碟陣列 RAID 1」還有主硬碟壞掉,備援硬碟可以即時頂上的功能,做資料備份不是他主要的工作。

其實這篇文章的前提是【看了其他攝影師備份照片影片的方法,「硬碟外接盒」做「磁碟陣列 RAID 1」,資料有異動可以達到「鏡像備份」的效果】,所以沒有提及更多

不過用「硬碟外接盒」做「磁碟陣列 RAID 1」,不用人工備份多份資料,算是取巧的用法了

備份三份以上最保險,他們還分享了「硬碟外接盒」壞掉,造成「主硬碟、備援硬碟」同時壞掉的經驗,太恐怖
「大漠國渡」的「大漠」https://kusdom.com/desertcountrylife
大漠國渡
大漠國渡 樓主

我懂你的意思,但我不懂你是想表達「RAID 1 不是備份」,還是想做「技術討論」,我只是想以一般人可以理解的方式說明 [沒有不敬的意思]

2024-08-28 14:35
大漠國渡
大漠國渡 樓主

還是非常感謝,您提供的寶貴資訊 [謝謝]

2024-08-28 14:36
大漠國渡 wrote:
備份三份以上最保險,他們還分享了「硬碟外接盒」壞掉,造成「主硬碟、備援硬碟」同時壞掉的經驗,太恐怖


基本上我的備份方式

主NAS..RAID1+快照 +外接移動硬碟(一周一次差異備份)

異地備份(老家)
舊NAS RAID1,定期從主硬碟內撈資料進行備份

NAS接有不斷電系統,不斷電系統和NAS有通訊,停電幾分鐘後就會主動關閉NAS


321備份算比較進階的,畢竟不是人人有辦法弄異地
「至少備份3份;使用2種不同的備份方法(如光碟備份、外接硬碟備份、磁帶備份),其中1份要存放異地」
Star Kfeirchris wrote:
配 UPS (不斷電系統) 使用就沒問題了,我自己就是自組 NAS + UPS,

已經遇過停電很多次了,搭配 UPS 軟體的話還可以做到 UPS 快沒電的時候自動關機,


讓我先窮人思維吧,近日花太多錢了

自組 NAS + UPS,的確是個好選擇

不過這樣又多一個耗材 UPS
「大漠國渡」的「大漠」https://kusdom.com/desertcountrylife
大漠國渡 wrote:
讓我先窮人思維吧,近...(恕刪)


建議第一次先買個2槽NAS+小的帶通訊UPS(這個很便宜)+外接硬碟

如果不需要太大空間,只弄2T~4T硬碟...整組弄下來應該2.5w有找
UPS本身不算耗材,裡面的電瓶才是,很便宜那玩意..

除非是學生吧,不然一般上班族都能負擔這些

我當初也是2槽入門的NAS用了大概5年,才移動到老家去再買一台新的4槽
CcCManCcC wrote:
基本上我的備份方式主NAS...(恕刪)
感謝大大的分享

非常完備的備份方式,因該會往這個方向去執行 (異地確實比較難達成
「大漠國渡」的「大漠」https://kusdom.com/desertcountrylife
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?