只是想要定期增量備份檔案
工作中總有很多簡單的概念想要執行,然後出(搜)現(尋)到了一大堆有的沒有的令人沮喪的號稱很好用的應用程式,然後,開始了一連串的測試和打槍的流程,直到,直到發現一條小徑,可以達成願望,而很多時侯,用的是古老的方法,最古老的方法就是手動,自已動操作一下,然後站起來喝杯咖啡,等電腦完成工作,但是…………………………
通常最簡單的要執行的第一個概念就是,這個自已動手作,只想做一次,電腦,你自個學起來,下次之後的每一次,都交給你了,哈 XD))))))))))
工作環境:
Windows 10 + cmd
robocopy 指令
不得不說,每次看到這個指令腦中就浮現這個畫面 |
執行 robocopy /?會有說明訊息,如果想要更多控制細項,可以參照官方說明文件。
結果:增量備份,同一天的紀錄檔寫到一起,在備份資料夾中留下比較新的檔案(同一個資料夾/檔案,如果比較新的那個,會被複製到備份資料夾中),以下內容存成批次檔(.bat 的檔案),然後設排程
@echo off
set TODAY=%date:~-13,4%%date:~-8,2%%date:~-5,2%
robocopy "C:\來源資料夾" "D:\備份資料夾" /E /XO /FFT /R:1 /W:5 /Z /NP /NDL /MT:10 /log+:"D:\備份資料夾\log\%TODAY%EOCdailyWorks%TODAY%.log"
鏡像備份,會刪除來源、來源、來源中沒有的資料夾/檔案,也就是說你在來源(c槽中)的資料夾下有個a資料夾,原本已經備份去到 d 槽中,後來你把 c 槽中的的a資料夾刪掉了,你執行這個批次檔之後,d槽裏面原本已經備份過來的資料夾會被殺掉,和來源資料夾同步的意思。
@echo off
set TODAY=%date:~-13,4%%date:~-8,2%%date:~-5,2%
robocopy "C:\來源資料夾" "D:\備份資料夾" /MIR /FFT /R:1 /W:10 /Z /NP /NDL /MT:2 /log+:"D:\備份資料夾\log\%TODAY%EOCdailyWorks%TODAY%.log"
後記:踩的一些坑
批次檔必須存成 ANCI 檔案格式,不然,資料夾有中文名稱時,無法執行備份工作
要先在備份資料夾裏開一個 log 資料夾,不然會找不到寫入的地方
unilog執行時報錯,索性跳過
日期的擷取要依系統實際回應的格式調整
備份完成,有增量式分日紀錄檔,只有想要的備份的資料夾含檔案結構,不封裝。
收工!
==================== 一些試過的應用程式和測試的紀錄 ====================
以下是跌倒的紀錄,只是避免個人在同樣的地方再跌倒一次,不代表聰明如你也會跌倒。
EaseUs todo bacup: 備份成應用程式獨有的格式,備到一個封裝檔再用應用程式來管理。
Synkron: 找不到定期執行的設定;備份的結果是備份資料夾的完整路徑,如果要備份 D:\路徑資料夾\備份的資料夾,會備出 D資料夾 > 路徑資料夾 > 備份的資料夾
FreeFileSync:基本上做得很不錯,但是設定並不直覺,要先設定備份的來源、目的地,設定完成後,另存成應用程式用的批次檔,再到 RealTimeSync 中設定多久執行一次,備份之後路徑結構改變了,有點困擾
-------------------------------------------------- 別人的作法 --------------------------------------------------
robocopy 的簡短說明:
簡單使用方式 :: ROBOCOPY source destination /MIR
source :: 來源目錄 (drive:\path 或 \\server\share\path)。
destination :: 目的地目錄 (drive:\path 或 \\server\share\path)。
/MIR :: 鏡像完整的樹狀目錄。
如需有關使用方式的詳細資訊,請執行 ROBOCOPY /?
**** /MIR 可以刪除檔案以及複製檔案!
一些可能會用到的參數的中文說明
/MIR:鏡像完整的樹狀目錄,相對於 /E /PURGE 用做鏡像備份,用做增量備份的好朋友。
/R:n 失敗複本的重試次數: 預設值是 1 百萬次。
/W:n 重試之間等候時間: 預設值是 30 秒。
/E 複製子目錄,包括空的子目錄。
/FFT:允許2個檔案間有2秒的差異用來減少負擔
/TEE 輸出至主控台視窗,以及記錄檔。
/NFL 沒有檔案清單 - 不記錄檔案名稱。
/NDL 沒有目錄清單 - 不記錄目錄名稱。
/XO 排除較舊的檔案。
/PURGE 刪除來源已經不存在的目的地檔案/目錄。
/COPYALL 複製所有檔案資訊 。
/LOG+:file 輸出狀態至記錄檔 (附加至現有的記錄檔) 。
參考這個(網路硬碟、鏡像備份)
net use Y: \\192.168.1.2
net use Z: \\192.168.2.2
robocopy Y:\ Z:\ /R:0 /W:0 /E /TEE /NFL /NDL /XO /PURGE /COPYALL /LOG+:C:\robocopy_log\%date:~0,4%%date:~5,2%%date:~8,2%.log
net use Y: /delete
net use Z: /delete
再參考一下這個(增量備份)
robocopy C:\source M:\destination /MIR /FFT /R:3 /W:10 /Z /NP /NDL
留言
張貼留言