Rsync是個相當棒的同步工具,比如:
1. 如何做本地兩個目錄之間的同步?
rsync -av --delete --force ~/Desktop/Miscs/ /media/disk/DesktopMiscs?
這樣就可以做~/Desktop/Miscs目錄的鏡像了。/media/disk是我的移動硬盤的掛載點。這里關鍵有個問題就是,一定要注意rsync中目錄的表示方法,如果命令行這樣寫:?
rsync -av --delete --force ~/Desktop/Miscs/* /media/disk/DesktopMiscs?
那效果就和第一個命令行完全不一樣了。第一個命令行是給Miscs目錄做完全鏡像,所以,命令執行完成后, /media/disk/DesktopMiscs目錄中的內容就會和Miscs目錄中的完全一樣;但是,第二個命令行就達不到這樣的效果,因為第二個命 令行中多了一個通配符*,所以,rsync就只會針對Miscs中現有的文件進行操作,而Miscs中不存在的文件或目錄rsync是不會去操作的。這樣 就會導致一個問題:如果文件或目錄在Miscs中不存在而在/media/disk/DesktopMiscs目錄中該文件或目錄存在,那么,rsync 執行完成后,/media/disk/DesktopMiscs中這些多余的文件或目錄就不會被刪除,即使命令行中加了--delete, --force這樣的option。
此外,rsync使用binary的方式操作所有的文件、目錄,所以,不存在文 件/目錄編碼、亂碼的問題。簡言之,被備份的東西是什么編碼,備份之后還是什么編碼。如果您在查看rsync備份后的數據時,看到的是亂碼,那就要檢查你 現在查看這些文件的系統編碼是不是能正確識別和顯示備份文件/目錄的編碼了。
2. 如何通過網絡做rsync同步,比如最常見的ssh?
rsync -av --force --delete --exclude 4.GTK+/ReferenceManual/ -e ssh super@192.168.0.100:/home/super/Access/ /home/super/Access/
* 192.168.0.100 needs openssh-server because, we operate on the laptop.
* "-e ssh" is the key point, it specifies the detail remote shell.