2014年9月18日 星期四

windows 使用 robocopy 同步備份檔案

robocopy 是 windows 內建的指令,可用來同步備份檔案。
執行 robocopy /? 可查看可使用的參數。

bat 批次檔範例:(同步遠端的網路資料夾,同步的指令在最後一行)
@echo off
REM 依日期設定 log 檔名
for /f "tokens=1-4 delims=-/ " %%i IN ("%date%") DO (
set year=%%i
set month=%%j
set day=%%k
)

SET fname=%year%-%month%-%day%
SET fname=%fname: =0%
SET fname=D:\web-sync\log\%fname%.txt

REM 刪除網路資料夾 \\192.168.0.123\test 的連接(這邊註解不執行)
REM net use \\192.168.0.123\test /d

REM 建立網路資料夾 \\192.168.0.123\test 的連接,xyz為帳號,1234為密碼
net use \\192.168.0.123\test /user:192.168.0.123\xyz 1234

REM 1.使用 robocopy 將遠端 \\192.168.0.123\test 的資料夾同步到 C:\aaa
REM 2./MIR,複製子目錄(含空目錄),刪除已經不存在的目錄、檔案
REM 3./R:n,失敗複本的重試次數: 預設值是 1 百萬次。
REM 4./LOG+:檔案,將 log 記錄到檔案(附加模式)
REM 5./XF,排除不同步的檔案
robocopy "\\192.168.0.123\test" "C:\aaa" /MIR /R:0 /LOG+:%fname% /XF *.bat

其他:
  • 若有防火牆,須開放的 port 為 SMB 的 445 (TCP)
  • robocopy 無法複製被鎖定的檔案,設定 /R:0 時,當來源檔案使用中被鎖定 lock 住時,可略過該檔案,節省同步時間。


參考:
Using robocopy and excluding multiple directories 
Windows Networking - Port 445 Only?
开放防火墙端口实现Robocopy文件复制
Robocopy Port Problem
ROBOCOPY.exe (XP Resource Kit/Standard Windows 7 command)

沒有留言:

張貼留言