cwRsync (Rsync Client) 是一款由 itefix.net 提供的免費軟體,讓 rsync 得以在 Windows 上實現,需透過終端機(CMD)下指令操作。rsync 使用由 rsync 演算法指定的檔案傳輸技術,僅透過網路傳輸已更改的檔案區塊,不僅更有效率也能節省網路流量。cwRsync 其實還有 GUI(圖形使用者介面)與 Server(伺服器)等版本,但最新版本目前只有 Client 是可以免費下載的,這可用於 Windows 系統上進行遠端檔案的備份和同步。這次就要運用這個工具,將 Linux 伺服器檔案同步至 Windows 電腦!
▲ cwRsync 官方網站截圖(https://www.itefix.net/cwrsync)。
首先先從官方網站下載軟體壓縮檔,解壓縮至適合的地方,裏頭有的檔案與目錄架構如下:
cwrsync │ cwrsync.cmd │ README.cwrsync.txt │ README.rsync.txt │ ├─bin │ copy-nextcloud-bkp.bat │ cygcrypto-46.dll │ cyggcc_s-seh-1.dll │ cygiconv-2.dll │ cygintl-8.dll │ cyglz4-1.dll │ cygpopt-0.dll │ cygwin1.dll │ cygz.dll │ cygzstd-1.dll │ d2u.exe │ rsync.exe │ ssh-agent.exe │ ssh-keygen.exe │ ssh.exe │ u2d.exe │ └─etc nsswitch.conf
接著要在「cwrsync/bin」路徑下開啟終端機(CMD),接著就能直接在 Windows 上跑 rsync 指令囉!但是...
rsync -chavzP -e "ssh -i /path/to/key" username@server:/path/to/file/ C:/backup/ --delete
基本上要用 SSH 連線的方式跟遠端請求檔案,為了方便這邊用公開金鑰認證的方式連線,但這個原始用在 Linux 指令卻不能直接使用,會出現兩個錯誤:
1. rsync error error in rsync protocol data stream (code 12)
這是 SSH 上 rsync 端口資料流的錯誤代碼,基本上不能使用 Windows 內建的 OpenSSH,須改用 cwRsync 在 bin 目錄中附的 ssh.exe。
2. The source and destination cannot both be remote.
不能兩邊都是遠端,這個問題就出在「C:/」這個用法會被認定為是遠端,需要改為「/cygdrive/c/」(c 代表 C 碟)。
被這兩個問題煩一下後成功搞出了以下可用的指令啦!
rsync -chavzP -e "C:/path/to/cwrsync/bin/ssh.exe -i /path/to/key" username@server:/path/to/file/ /cygdrive/c/backup/ --delete
希望能幫助到大家囉!
留言區 / Comments
萌芽論壇