環境是怎樣的?兩台在同的地方嗎?相同的網段, 還是不同地方?
相同的地方, 就簡單一點, 只要一個開分享, 一個用排程去複製出來就好了, 方法有很多, 大部份都直接用批次檔就搞定了.
如果不同地方, 那可能就考慮用個共同的空間來存放, 由ServerA上傳, 由ServerB下載.
範例一、相同地方又相同網段
ServerA 將 D:\DIRA\ 開分享, 權限要設定讓 ServerB 的帳號可以讀取...
ServerB 設定排程, 執行以下批次檔內容...
<pre class="c" name="code">
@Echo off
Net Use \\ServerA\DirA /user:帳號 密碼
Copy \\ServerA\DirA\A.txt D:\DIRB\Bdata.txt
Net Use \\ServerA\DirA /delete
範例二、不同地方或是不同網段
ServerA 使用 FTP 定時上傳到某個資料夾, 或是開啟 FTP 連線服務
ServerB 使用 FTP 定時下載資料夾內容並刪除..
由 ServerA 定時上傳到某FTP的方式, ServerA 排程執行以下批次檔...
<pre class="c" name="code">
@Echo off
Set FTPSrv=192.168.0.1
Echo 帳號 > Update.cmd
Echo 密碼 >>Update.cmd
Echo cd 目錄名稱 >>Update.cmd
Echo mput A.txt >>Update.cmd
Echo bye >>Update.cmd
Ftp -n -v -i %FTPSrv% < Update.cmd
Del Ftp.cmd
由 ServerB 定時下載的方式, ServerB 排程執行以下批次檔...
<pre class="c" name="code">
@Echo
Set FPTSrv=192.168.0.1
Echo 帳號 > FTPDownload.cmd
Echo 密碼 >> FTPDownload.cmd
Echo cd 目錄名稱 >> FTPDownload.cmd
Echo mget A.txt >> FTPDownload.cmd
Echo delete A.txt >> FTPDownload.cmd (選用)
Echo bye >> FTPDownload.cmd
Ftp -n -v -i %FTPSrv% < FTPDownload.cmd
Del FTPDownload.cmd
如果是由 ServerA 開FTP的話, 那 ServerA 就不用執行, 只要ServerB跑就可以了..
環境是在同一個區域網路,不同網段,不同地方。
請問備份過去B server的檔案,批次檔要如何編寫檔名可以自動編號備份的日期?
設定排程時,直接將路徑指向批次檔的位置就好了嗎?需要再額外加參數或指令嗎?
謝謝指導!
發現DirA由有大概7個檔案要備過去DirB,所以我應該修改批次檔如下就可以全備過去了吧!
Copy \\ServerA\DirA\ D:\DIRB\
可以在DIRB下自動建立備份日期的資料夾嗎?如:
mkdir D:\DIRB\%date%
Copy \\ServerA\DirA\ D:\DIRB\%date%\
這樣對嗎?
A1, 如果要全部複製的話, 建議用
<pre class="c" name="code">XCopy \\ServerA\DirA\*.* \\ServerB\DirB\ /SVYQ (S = 目錄, V = 新檔, Y = 同意複蓋, Q = 不顯示過程)
A2, 如果要建立日期資料夾的話, 因為直接使用 %date% 會出現
<pre class="c" name="code"> 2010/08/31 星期二
這樣是沒有辦法建立目錄的, 因為目錄不能含 / 的符號, 所以要使用 For 的指令去縮短, 以下是範例[code]
For /F "tokens=1-3 delims=/ " %%a in ('Date /t') do (Set Date=%%a%%b%%c)
Mkdir D:\DirB\%Date%
XCopy \\ServerA\DirA\*.* D:\DirB\%Date%\ /SVYQ
已修改以上批次檔存成DRBK.cmd檔,置於d:\vertias\DR.cmd目錄下。
於排程設定如圖
可是它好像沒有自動執行的動作,請問還有什麼參數需要設定讓它自動執行嗎?
其實 Server 的排程, 有時候就是會有透逗的情形, 原因我也不太清楚, 但如果要確定排程執行時, 有沒有正常運作, 可以直接在排程上點滑鼠兩下, 強迫它執行, 看看有沒有出現您所預期的效果, 至於排程怎麼沒有自動執行, 大部份都跟登入還有權限比較有關係.
滑鼠兩下是開啟內容, 滑鼠右鍵, 執行..就會馬上跑排程, 看看是不是執行錯誤...
如果執行完後, 沒有複製檔案的話, 那把指令改成
<pre class="c" name="code">
For /F "tokens=1-3 delims=/ " %%a in ('Date /t') do (Set Date=%%a%%b%%c)
Mkdir D:\DirB\%Date%
Pause
XCopy \\ServerA\DirA\*.* D:\DirB\%Date%\ /SVYQ
Pause
查檢一下, 是哪邊出問題, 所以才會沒有複製成功.
直接執行cmd檔,和手動執行排程都可正常將檔案複製過去。
只是排程的時間內並沒有自動執行排程工作,登入權限都是管理者權限了。
如果這樣設定沒有什麼問題的話,我再觀察看看什麼問題好了。
謝謝!
windosw排程還是沒辦法自動執行呀,不知道問題出在那裡???
寫批次檔, 在A Server用Windows工作排程吧? (B Server 要預先登入)
但是建議最好是用日期把備份的目錄分開
不然單一備份存檔的話
會有安全性的風險
A掛了, B備份的那一份也有可能是壞檔
單一備份的話
會可能無法挽救
有個類似的範例
以前網友給我的
是用批次檔定時用 winrar 壓縮備份
你可以參考看看拿去改
http://www.player.idv.tw/prog/index.php/Windows%E5%B7%A5%E4%BD%9C%E6%8E%92%E7%A8%8B
把 PathSrc 與 PathBackup 改掉
然後把最下面的 winrar 那行拿掉
其他的你自己試
你可以考慮使用 Microsoft 出的免費程式 Microsoft SyncToy
它可設定自動化同步處理排程,全你排定的時間內完成相關工作
而且可依照你的需求來執行
同步化 (Sync)
回應 (Echo)
訂閱 (Subscribe)
貢獻 (Contribute)
結合 (Combine)
相關說明可參考
公用程式焦點: SyncToy
SyncToy v2.0
下載 SyncToy 2.1