之前在Windows各電腦之間的備分都是用Windows內建的Robocopy,只要指令參數設定正確,就可以快速地完成任務。
不過最近有需求需要一直同步帶著資料在iOS設備裡,方便記錄查詢。原來都是透過JB後的SFTP來傳檔案,但似乎不是正途,Google了一下,有種服務叫rsync是專門拿來作同步用,另外有圖形GUI介面的Grsync在 Win / Mac /Linux 都能操作,蠻不錯的方便跨平台備分同步工具。記錄一下測試過程:
已 Jail Break 越獄的iOS設備,進入Cydia 尋找安裝 OpenSSH 及 rsync 。(rsync需要兩端都有此一Client程式)
Windows下載Grsync(其他平台也有Grsync,可自行搜尋)
http://sourceforge.net/projects/grsync-win/
安裝好後,Source and destination的欄位,遠端就設定(@後的IP位置請改為iOS設備的位置)
root@192.168.1.101:/指定目錄/
Windows本地端就瀏覽到想要同步的資料夾。下方的各種參數,有個skip newer可以勾起來,這樣可以預防同步錯方向時,發生資料被覆蓋的慘劇。 都設定好之後,就可以按下面的simulation測試,此時應該會帶出密碼框,輸入iOS設備的預設密碼 alpine,(個人建議是換掉預設密碼,比較安全一些,換法就再自行Google就不重述)。如果沒看到紅字就應該可以正式同步了,按下Execute,完成。Grsync會帶出2個視窗,有時候是在終端機的框要輸入東西,有時候執行結果又是在GUI那邊顯示,焦點不會自動切換,算是一個小小的Bug吧?另外如果備分出來的檔案資料夾無法進入,應該是檔案安全權限在跨系統時轉換有點問題,可以調整一下preserve premission權限選項試試看。
Grsync也可以設定讓Windows排程定時運作,在控制台裡的排程,設定 "C:\Program Files\Grsync\bin\grsync.exe" -e default
上面指令最後的default可以更換成在Grsync上自定儲存的session名稱,這樣就可以輕鬆利用高速比對演算法、加密、跨平台、跨網路遠端的自動同步備分工具。
後記:grsync不知為何,中文檔案傳輸會變亂碼,而cygwin下的rsync就不會,原來就想說那乾脆就不要用中文檔名。但想想還是宥情況會使用中文檔名,那只好乖乖用Cygwin了...(在Cygwin 1.7.x 家目錄的 .bashrc檔中, 要加上 export LC_ALL=zh_TW.UTF-8)用Dokan SSHFS 先把它掛成磁碟,就不會有編碼的問題,用rsync或grsync都很輕鬆同步備分了。以上各種方法都有bug,還是先避開中文檔名比較實際一點...