rsync的 ( 遠程同步 )爲在Linux / Unix系統局部 拷貝和同步文件和目錄遠程以及一個最經常使用的命令。 隨着rsync命令的幫助,您能夠複製並在目錄中遠程和本地同步數據,在磁盤和網絡,進行數據備份和兩臺Linux機器之間的鏡像。linux
本文介紹rsync命令的10個基本和高級的用法在基於Linux的機器遠程和本地傳輸文件。 你並不須要以root用戶運行rsync命令。web
# rsync options source destination
推薦閱讀: 如何同步文件/目錄使用rsync非標準SSH端口apache
咱們能夠用下面的命令的幫助安裝的rsync包。centos
# yum install rsync (On Red Hat based systems) # apt-get install rsync (On Debian based systems)
如下命令將同步本地計算機上的單個文件從一個位置到另外一個位置。 在這裏,在這個例子中,backup.tar須要的文件名被複制或同步到/ tmp /備份/文件夾。安全
[root@howtoing]# rsync -zvh backup.tar /tmp/backups/ created directory /tmp/backups backup.tar sent 14.71M bytes received 31 bytes 3.27M bytes/sec total size is 16.18M speedup is 1.10
在上面的示例中,您能夠看到,若是目標不存在,rsync將自動爲目標建立一個目錄。服務器
如下命令將將同一目錄中的全部文件傳輸或同步到同一計算機中的不一樣目錄。 在這裏,在這個例子中,/根/ rpmpkgs包含一些rpm軟件包的文件和你想要的目錄裏面被複制的/ tmp /備份/文件夾。網絡
[root@howtoing]# rsync -avzh /root/rpmpkgs /tmp/backups/ sending incremental file list rpmpkgs/ rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm rpmpkgs/nagios-3.5.0.tar.gz rpmpkgs/nagios-plugins-1.4.16.tar.gz sent 4.99M bytes received 92 bytes 3.33M bytes/sec total size is 4.99M speedup is 1.00
此命令未來自本地計算機的目錄同步到遠程機器,例如 :有一個在其中包含了一些RPM包本地計算機「rpmpkgs」的文件夾,你想那個地方目錄的內容發送到遠程服務器,您可使用如下命令。ssh
[root@howtoing]$ rsync -avz rpmpkgs/ root@192.168.0.101:/home/ root@192.168.0.101's password: sending incremental file list ./ httpd-2.2.3-82.el5.centos.i386.rpm mod_ssl-2.2.3-82.el5.centos.i386.rpm nagios-3.5.0.tar.gz nagios-plugins-1.4.16.tar.gz sent 4993369 bytes received 91 bytes 399476.80 bytes/sec total size is 4991313 speedup is 1.00
此命令將幫助您將遠程目錄同步到本地目錄。 在這裏,在這個例子中,目錄/ home / tarunika / rpmpkgs這是一個遠程服務器上正在於在/ tmp / myrpms本地計算機複製。ide
[root@howtoing]# rsync -avzh root@192.168.0.100:/home/tarunika/rpmpkgs /tmp/myrpms root@192.168.0.100's password: receiving incremental file list created directory /tmp/myrpms rpmpkgs/ rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm rpmpkgs/nagios-3.5.0.tar.gz rpmpkgs/nagios-plugins-1.4.16.tar.gz sent 91 bytes received 4.99M bytes 322.16K bytes/sec total size is 4.99M speedup is 1.00
隨着rsync的,咱們可使用SSH( 安全外殼 )進行數據傳輸,使用SSH協議在傳輸咱們的數據,你能夠確保你的數據在加密的安全鏈接傳送,這樣當它被轉移沒有人能夠讀取數據在互聯網上的電線。
此外,當咱們使用rsync,咱們須要提供用戶名/ root密碼來完成特定的任務,所以在使用SSH選項將把您的登陸信息以加密的方式,使你的密碼是安全的。
要指定使用rsync的協議,你須要給你想使用的協議名稱爲「-e」選項。 在這裏,在這個例子中,咱們將使用「SSH」與「-e」選項,並執行數據傳送。
[root@howtoing]# rsync -avzhe ssh root@192.168.0.100:/root/install.log /tmp/ root@192.168.0.100's password: receiving incremental file list install.log sent 30 bytes received 8.12K bytes 1.48K bytes/sec total size is 30.74K speedup is 3.77
[root@howtoing]# rsync -avzhe ssh backup.tar root@192.168.0.100:/backups/ root@192.168.0.100's password: sending incremental file list backup.tar sent 14.71M bytes received 31 bytes 1.28M bytes/sec total size is 16.18M speedup is 1.10
建議閱讀: 使用rsync來同步新增功能或變動/修改的文件在Linux中
爲了顯示進度,同時從一臺計算機傳送數據到不一樣的機器,咱們能夠用它'-progress「選項。 它顯示完成傳輸的文件和剩餘時間。
[root@howtoing]# rsync -avzhe ssh --progress /home/rpmpkgs root@192.168.0.100:/root/rpmpkgs root@192.168.0.100's password: sending incremental file list created directory /root/rpmpkgs rpmpkgs/ rpmpkgs/httpd-2.2.3-82.el5.centos.i386.rpm 1.02M 100% 2.72MB/s 0:00:00 (xfer#1, to-check=3/5) rpmpkgs/mod_ssl-2.2.3-82.el5.centos.i386.rpm 99.04K 100% 241.19kB/s 0:00:00 (xfer#2, to-check=2/5) rpmpkgs/nagios-3.5.0.tar.gz 1.79M 100% 1.56MB/s 0:00:01 (xfer#3, to-check=1/5) rpmpkgs/nagios-plugins-1.4.16.tar.gz 2.09M 100% 1.47MB/s 0:00:01 (xfer#4, to-check=0/5) sent 4.99M bytes received 92 bytes 475.56K bytes/sec total size is 4.99M speedup is 1.00
這兩個選項可讓咱們包括經過與這些選項能夠幫助咱們來指定要在同步歸入和排除文件和文件夾,你不想被轉移這些文件或目錄指定參數排除文件。
在這裏,在這個例子中,rsync命令將包括那些只有那些帶「R」開始的文件和目錄,並排除全部其它文件和目錄。
[root@howtoing]# rsync -avze ssh --include 'R*' --exclude '*' root@192.168.0.101:/var/lib/rpm/ /root/rpm root@192.168.0.101's password: receiving incremental file list created directory /root/rpm ./ Requirename Requireversion sent 67 bytes received 167289 bytes 7438.04 bytes/sec total size is 434176 speedup is 2.59
若是文件或目錄在源處不存在,但在目標位置已存在,那麼在同步時可能須要刪除目標處的現有文件/目錄。
咱們能夠用'-delete'選項刪除不存在源目錄中的文件。
源和目標已同步。 如今,在建立新的目標文件test.txt。
[root@howtoing]# touch test.txt [root@howtoing]# rsync -avz --delete root@192.168.0.100:/var/lib/rpm/ . Password: receiving file list ... done deleting test.txt ./ sent 26 bytes received 390 bytes 48.94 bytes/sec total size is 45305958 speedup is 108908.55
目標有叫test.txt的 ,當用'-delete'選項的源同步新的文件,它去掉了文件test.txt。
您能夠指定要傳輸的最大文件大小或同步。 你能夠用「-MAX大小 」選項作到這一點。 在這裏,在這個例子中,最大文件的大小是200K,所以該命令將只傳送那些等於或大於200k的較小的文件。
[root@howtoing]# rsync -avzhe ssh --max-size='200k' /var/lib/rpm/ root@192.168.0.100:/root/tmprpm root@192.168.0.100's password: sending incremental file list created directory /root/tmprpm ./ Conflictname Group Installtid Name Provideversion Pubkeys Requireversion Sha1header Sigmd5 Triggername __db.001 sent 189.79K bytes received 224 bytes 13.10K bytes/sec total size is 38.08M speedup is 200.43
如今,假設您有一個主Web服務器和數據備份服務器,您建立了每日備份並與備份服務器同步,如今您不想在Web服務器中保留備份的本地副本。
因此,你會等待傳輸完成,而後手動刪除這些本地備份文件? 固然不。 這種自動刪除能夠用'-remove-源文件 「選項來完成。
[root@howtoing]# rsync --remove-source-files -zvh backup.tar /tmp/backups/ backup.tar sent 14.71M bytes received 31 bytes 4.20M bytes/sec total size is 16.18M speedup is 1.10 [root@howtoing]# ll backup.tar ls: backup.tar: No such file or directory
若是你是一個新手,並使用rsync,不知道你的命令去作什麼。 Rsync可能真的搞砸了你的目標文件夾中的東西,而後作一個撤消能夠是一個乏味的工做。
推薦閱讀: 如何同步兩個Apache的Web服務器/網站使用rsync
此選項將不會作任何改變只作命令的預演和使用顯示命令的輸出,若是輸出顯示徹底相同你想作的事,那麼你能夠從你的命令刪除「-dry運行 」選項,在終端上運行。
root@howtoing]# rsync --dry-run --remove-source-files -zvh backup.tar /tmp/backups/ backup.tar sent 35 bytes received 15 bytes 100.00 bytes/sec total size is 16.18M speedup is 323584.00 (DRY RUN)
您能夠同時從一臺機器與'-bwlimit'選項的幫助下將數據傳輸到另外一臺機器上設置的帶寬限制。 此選項能夠幫助咱們限制I / O帶寬。
[root@howtoing]# rsync --bwlimit=100 -avzhe ssh /var/lib/rpm/ root@192.168.0.100:/root/tmprpm/ root@192.168.0.100's password: sending incremental file list sent 324 bytes received 12 bytes 61.09 bytes/sec total size is 38.08M speedup is 113347.05
此外,默認狀況rsync的同步不只改變塊和字節,若是你想明確地要同步整個文件,而後使用「-W'與它選項。
[root@howtoing]# rsync -zvhW backup.tar /tmp/backups/backup.tar backup.tar sent 14.71M bytes received 31 bytes 3.27M bytes/sec total size is 16.18M speedup is 1.10參考文章:https://www.howtoing.com/rsync-local-remote-file-synchronization-commands/