$ rsync [options] src dest
這個選項,簡單易懂,就是讓rsync輸出更多的信息,你增加越多的v,就可以獲得越多的日志信息。
這是個壓縮選項,只要使用了這個選項,rsync就會把發向對端的數據先進行壓縮再傳輸。對於網絡環境較差的情況下建議使用。一般情況下,-z的壓縮算法會和gzip的一樣。
我們在第一次使用rsync時,往往會遇到這樣的囧境:
$ rsync superman machineB:/home/userB
skipping directory superman
如果你不額外告訴rsync你需要它幫你同步文件夾的話,它是不會主動承擔的,這也正是rsync的懶惰之處。所以,如果你真的想同步文件夾,那就要加上-r選項,即recursive(遞歸的、循環的),像這樣:
$ rsync -r superman machineB:/home/userB
對於文件夾,rsync是會明察秋毫的,只要你加了-r選項,它就會恪盡職守的進入到文件夾裡去檢查,而不會只對文件夾本身做“quick check”的。
rsync一旦發現某個文件是軟鏈接,就會無視它,除非我們增加-l選項。使用了-l選項後,rsync會完全保持軟鏈接文件類型,原原本本的將軟 鏈接文件復制到目的端,而不會“follow link”到指向的實體文件。如果我偏偏就想讓rsync采取follow link的方式,那就用-L選項就可以了。你可以自己試試效果。
這個選項的全名是“perserve permissions”,顧名思義,就是保持權限。如果你不使用此選項的話,rsync是這樣來處理權限問題的:
如果你使用了-p選項,則無論如何,rsync都會讓目的端保持與源端的權限一致的。
這兩個選項是一對,用來保持文件的屬組(group)和屬主(owner),作用應該很清晰明了。不過要注意的一點是,改變屬主和屬組,往往只有管理員權限才可以。
-D選項,原文解釋是“preserve devices(root only)”,從字面意思看,就是保持設備文件的原始信息。
-rlptgoD
這一坨選項。以一敵七,唯-a選項也。三個選項都是和“刪除”有關的:
這個學習可是要小心使用到,一不小心會刪除很多東西哦。
可以使用-n選項,它會用受影響的文件列表來警告你,但不會真的去刪除,這就讓我們有了確認的機會和回旋的余地。
如果你不希望同步一些東西到目的端的話,可以使用–exclude選項來隱藏,rsync還是很重視大家隱私的,你可以多次使用–exclude選項來設置很多的“隱私”。 如果你要隱藏的隱私太多的話,在命令行選項中設置會比較麻煩,rsync還是很體貼,它提供了–exclude-from選項,讓你可以把隱私一一列在一個文件裡,然後讓rsync直接讀取這個文件就好了。
這就是傳說中的斷點續傳功能。默認情況下,rsync會刪除那些傳輸中斷的文件,然後重新傳輸。但在一些特別情況下,我們不希望重傳,而是續傳。 我們在使用中,經常會看到有人會使用-P選項,這個選項其實是為了偷懶而設計的。以前人們總是要手動寫–partial –progress,覺得太費勁了,倒不如用一個新的選項來代替,於是-P應運而生了。
使用這個選項,rsync會顯示出傳輸進度信息,有什麼用呢,rsync給了一個很有意思的解釋: This gives a bored user something to watch.
rsync的算法十分高效,酷殼上 一篇文章 介紹來其核心算法,就不再贅述來。
可以架設rsync服務器,rsync以守護進程運行,客戶端將rsync指令寫成一個shell腳本,通過crontab定期執行腳本,以實現服務器和客戶端間特定文件或目錄到同步,這樣就不需要你每次手動同步來,而且rsync服務器配置也十分簡單。
主要涉及三個文件:
文件內容大體如下:
# Minimal configuration file for rsync daemon # See rsync(1) and rsyncd.conf(5) man pages for help # This line is required by the /etc/init.d/rsync script pid file = /var/run/rsyncd.pid motd file = /etc/rsyncd.motd port = 873 address = 192.168.20.24 #uid = nobody #gid = nobody uid = root gid = root use chroot = yes read only = no # limit access to private LANs hosts allow = * hosts deny = * max connections = 5 # This will give you a separate log file log file = /var/log/rsync.log # This will log every file transferred - up to 85,000+ per user, per sync # transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 [test] path = /home/lcl/test list = yes ignore errors auth users = lcl secrets file = /etc/rsyncd.secrets comment = lcl test #exclude = samba/rsync使用到是873好端口,上面到配置中
hosts allow
是允許使用這台rsync服務到機器到IP地址,hosts deny
則是拒絕到,不同IP以空格隔開。
[test]及之後到配置則是,配置rsync目錄,包括目錄到路徑,使用到用戶,密碼文件,可以使用exclude
排除不要同步到文件或目錄。
這是存儲rsync服務用戶到用戶名和密碼,是一個明文文本文件,非常重要,屬性需要設為600,只允許所有者讀寫,文件格式如下:
lcl:12345
文件記錄來rsync服務到歡迎信息,當用戶使用該服務時會顯示,可以設置為任何文本信息,如:
++++++++++++++++++++++++++++++++++++++ + Welcome to use lcl rsync services! + ++++++++++++++++++++++++++++++++++++++
配置完以上文件,可以啟動rsync服務來:
rsync --daemon
客戶端可以通過rsync命令活腳本來進行同步數據來
rsync的命令格式可以為:
rsync有六種不同的工作模式: