6.6 rsync:文件同步工具
生活随笔
收集整理的這篇文章主要介紹了
6.6 rsync:文件同步工具
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
rsync
是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據鏡像同步備份的優秀工具。rsync適用于Unix/Linux/Windows等多種操作系統平臺。rsync命令有三種常見模式
具體如下: 1)本地模式:rsync [option] [SRC] [DEST]rsync [選項] [源文件] [目標文件]2)通過遠程Shell訪問模式; 拉取(Pull):rsync [option] [USER@]HOST:SRC [DEST]rsync [選項] 用戶@主機:源文件 [目標文件] 推送(Push);rsync [option] [SRC] [USER@]HOST:DESTrsync [選項] [源文件] 用戶@主機:目標文件 3)rsync守護進程模式 拉取(Pull):rsync [option] [USER@]HOST:SRC [DEST]rsync [選項] 用戶@主機:源文件 [目標文件]rsync [option] rsync://[USER@]HOST[:PORT]/SRC [DEST]rsync [選項] rsync://用戶@主機:端口/源文件 [目標文件]推送(Push):rsync [option] [DEST] [USER@]HOST:SRCrsync [選項] [目標文件] 用戶@主機:源文件 rsync [option] [DEST] rsync://[USER@]HOST[:PORT]/SRC rsync [選項] [目標文件] rsync://用戶@主機:端口/源文件rsync命令的參數選項及說明
-V,--verbose?? ?詳細模式輸出,傳輸時的進度等信息 -z,-compress?? ?傳輸時進行壓縮以提高傳輸效率,-compress-level=NUM可按級別壓縮 -a,-archive? ? ?以遞歸方式傳輸文件,并保持所有文件的屬性,相當于-rtopgDl -r,-recursive? ?對子目錄以遞歸模式,即目錄下的所有目錄都以同樣的模式傳輸,注意是小寫r -t,-times?? ??? 保持文件的時間信息 -o,--owner ? ? ?保持文件的屬主信息 -p,-perms?? ?? ?保持文件的權限 -g,-group? ? ? ?保持文件的屬組信息 -P,--progress?? 顯示同步的過程及傳輸時的進度等信息 -D,-devices?? ??保持設備文件信息 -l,-links?? ??? 保留軟鏈接 -e,--rsh=COMMAND?? ?使用的信道協議,指定替代rsh的shell程序,例如:ssh -n?? ??? ??? ??? 測試選項,模擬執行 -exclude=PATTERN ?? ??指定排除不需要傳輸的文件模式(和tar參數一樣) -exclude-from=FILE?? ?從文本文件讀取需要排除的文件列表 -bwlimit=KBPS?? ?? ? ?限制傳輸速度 -delete?? ??? ??? ?? ?使目標目錄內容和源保持目錄一致,刪除不同的文件源地址帶與不帶斜線(/)的區別的例子。
[root@cs6 /]# mkdir -p /data1/{test1,test2} /data2 [root@cs6 /]# rsync -av /data1/ /data data1/ data2/ [root@cs6 /]# rsync -av /data1/ /data2 #<=如果源目錄的末是有斜線,就會復制目錄內的內客,而不是復制目錄本身。 sending incremental file list test1/ test2/sent 61 bytes received 20 bytes 162.00 bytes/sec total size is 0 speedup is 0.00 [root@cs6 /]# ls /data2 test1 test2 [root@cs6 /]# rsync -av /data1 /data2 #<=如果源目錄沒有斜線,則會復制目錄本身及目錄下的內容。 sending incremental file list data1/ data1/test1/ data1/test2/sent 74 bytes received 24 bytes 196.00 bytes/sec total size is 0 speedup is 0.00 [root@cs6 /]# ls /data2/ data1 test1 test2 [root@cs6 /]# 目標目錄的末尾有沒有斜線都不影響最終結果。本地復制的例子(類似cp)
其比cp好的地方就是可以實現增量復制。 [root@cs6 /]# rsync -av /etc/hosts /tmp #<==源文件/etc/hosts和目標目錄/tmp都在同一臺主機之上。 sending incremental file list hostssent 231 bytes received 31 bytes 524.00 bytes/sec total size is 158 speedup is 0.60 [root@cs6 /]# ll -h /tmp/hosts -rw-r--r--. 1 root root 158 Jan 12 2010 /tmp/hosts刪除文件的特殊例子(--delete)
問題:一個目錄下有幾十萬個文件,用什么方式可以最快刪除所有文件? [root@cs6 ~]# mkdir /null #<==創建一個空目錄。 [root@cs6 ~]# rsync -av --delete /null/ /tmp/ #<==選項--delete 使tmp目錄內容和空目錄保持一致,不同的文件及目錄將會被刪除,即null里有什么內容,tmp里就有什么內容。null里沒有的,而tmp里有的就必須要刪除,因為null目錄為空,因此此命令會刪除/tmp目錄中的所有內容。 sending incremental file list ./ deleting tmp/html/oldboy/test/ deleting tmp/html/oldboy/ deleting tmp/html/9.html deleting tmp/html/8.html deleting tmp/html/10.html deleting tmp/html/1.html ...... deleting install.log deleting hosts deleting etc.tar.gz deleting anaconda-ks.cfg sent 29 bytes received 15 bytes 88.00 bytes/sec total size is 0 speedup is 0.00 [root@cs6 ~]# ls /tmp拉取推送文件及目錄(類似前文的scp命令)
[root@cs6 ~]# rsync -av 10.0.0.55:/tmp/ /tmp root@10.0.0.55's password: receiving incremental file list ./ anaconda-ks.cfg ks-script-4WSQ4c services yum.log [root@cs6 ~]# ls /tmp anaconda-ks.cfg ks-script-4WSQ4c services tmp yum.log [root@cs6 ~]# rsync -av /tmp/ 10.0.0.55:/tmp/ root@10.0.0.55's password: sending incremental file listsent 1115 bytes received 27 bytes 326.29 bytes/sec total size is 20341760 speedup is 17812.40 與scp命令復制的結果進行對比可以發現,使用rsync復制時,重復執行復制直至目錄下文件相同就不再進行復制了。利用SSH隧道模式(-e)拉取推送文件及目錄
[root@cs6 ~]# touch /tmp/test.txt [root@cs6 ~]# rsync -av -e 'ssh -p 22' /tmp 10.0.0.55:/tmp/#<=前面的案例使用rsync同步數據都是明文傳輸的,在要求保障數據安全的場景下,可以使用-e選項借助SSH隨道進行加密傳輸數據,-p是SSH命令的選項,指定SSH傳輸的端口號為22,這條命令的結果是將本地/tmp目錄下的內容通過SSH加密隧道推送數據到10.0.0.55主機的/tmp目錄。
同理,執行"rsync -av -e "ssh -p 22' 10.0.0.55:/tmp/ /tmp” 可以從10.0.0.55主機的/tmp日錄通過SSH加密隧道將數據拉取到本地/tmp目錄下。 root@10.0.0.55's password: sending incremental file list tmp/ tmp/anaconda-ks.cfg tmp/ks-script-4WSQ4c
經驗技巧 下面列出rsync命令的經驗技巧以供讀者參考。 1)生產場景常用選項-avz,相當于-vzrtopg(這是網上文檔常見的選項),但是此處建議大家使用-avz選項,更簡單明了。如果在腳本中使用也可以省略-v選項。 2)關于z壓縮選項的使用建議,如果為內網環境,且沒有其他業務占用帶寬,可以不使用z選項。不壓縮傳輸,幾乎可以滿帶寬傳輸(千M網絡),壓縮傳輸則網絡發送速度就會驟降,壓縮的速率趕不上傳輸的速度。 3)選項n是一個提高安全性的選項,它可以結合-v選項輸出模擬的傳輸過程,如果沒有錯誤,則可以去除n選項真正的傳輸文件。 6.7老男孩逆襲思想:新手如何高效地提問 1)問問題前要有充分的準備,努力讓自己問問題的水平更專業。 2)想好你要問的內容,確定是否能表達清楚,可以先和小伙伴提前練習一下表達能力。 3)如果口頭表達不清楚,就寫出來,給小伙伴看。采用適合自己的表達方式(當面/電話/郵件/微信/QQ)進行溝通很重要。 4)問問題時,把自己嘗試過的解決方法也一并說出來,避免別人解答時走彎路。 5)問問題應禮貌客氣,但要學會開門見山,及時拋出問題。 6)Linux問題錯誤日志及輸出報錯類問題盡量少截圖,若使用QQ發文字,也要注意避免將文字自動轉換為表情,也不要自行翻譯后再描述,就保持原樣給出錯誤描述。解答的人可能需要搜索才能幫到你,如果你提供的是截圖,那么解答人如果很忙就會很容易放棄幫你。 7)不要吊死在一棵樹上,可以同時問多個人(普遍培養/重點選拔)。 8)最終解決完問題后,將解題思路整理成文檔,無論別人是否幫到你,都要把答案發給你問過問題的人,學會感恩,未來的路才會越走越寬(感恩幫助你的人,那是應該的,對沒有幫到你的人也感恩才叫智慧)。 9)通過贊美、凸顯重要性、滿足心理需求等方式,讓他人樂于幫你解決問題。 10)多問封閉式問題,少問開放式問題,多為解答問題的人著想,是否能讓對方省事,決定了對方是否愿意幫你以及幫你的速度。? -
總結
以上是生活随笔為你收集整理的6.6 rsync:文件同步工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6.2 gzip:压缩或解压文件
- 下一篇: 10.13 nc:多功能网络工具