Rsync(遠程同步): inux中Rsync命令的實際示例
rsync的 ( 遠程同步 )為在Linux / Unix系統局部 拷貝和同步文件和目錄遠程以及一個最常用的命令。 隨著rsync命令的幫助,您可以復制並在目錄中遠程和本地同步數據,在磁盤和網絡,進行數據備份和兩臺Linux機器之間的鏡像。
本文介紹rsync命令的10個基本和高級的用法在基於Linux的機器遠程和本地傳輸文件。 你並不需要以root用戶運行rsync命令。
Rsync命令的一些優點和功能
- 它有效地將文件復制到遠程系統或從遠程系統同步。
- 支持復制鏈接,設備,所有者,組和權限。
- 這是比快SCP( 安全復制 ),因為rsync使用遠程更新協議,允許轉讓只是兩套文件之間的差異。 第一次,它從源到目標復制文件或目錄的整個內容,但從下一次,它只將已更改的塊和字節復制到目標。
- rsync的消耗更少的帶寬 ,因為它使用壓縮和解壓縮方法在發送和接收數據兩端。
rsync命令的基本語法
# rsync options source destination
與rsync命令一起使用的一些常見選項
- -v:詳細
- -r:將數據遞歸(但不保存時間戳和權限,同時傳輸數據
- -a:歸檔模式下,歸檔模式允許遞歸地拷貝文件,同時也保留了符號鏈接,文件權限,用戶組所有權和時間戳
- -z:壓縮文件中的數據
- -h:在人類可讀的格式人類可讀,輸出數字
推薦閱讀: 如何同步文件/目錄使用rsync非標準SSH端口
在Linux機器上安裝rsync
我們可以用下面的命令的幫助安裝的rsync包。
# yum install rsync (On Red Hat based systems)
# apt-get install rsync (On Debian based systems)
1.本地復制/同步文件和目錄
在本地計算機上復制/同步文件
以下命令將同步本地計算機上的單個文件從一個位置到另一個位置。 在這裏,在這個例子中,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
2.將文件和目錄復制/同步到服務器或從服務器同步
將目錄從本地服務器復制到遠程服務器
此命令將來自本地計算機的目錄同步到遠程機器,例如 :有一個在其中包含了一些RPM包本地計算機“rpmpkgs”的文件夾,你想那個地方目錄的內容發送到遠程服務器,您可以使用以下命令。
[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本地計算機復制。
[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
通過SSH的Rsync
隨著rsync的,我們可以使用SSH( 安全外殼 )進行數據傳輸,使用SSH協議在傳輸我們的數據,你可以確保你的數據在加密的安全連接傳送,這樣當它被轉移沒有人可以讀取數據在互聯網上的電線。
此外,當我們使用rsync,我們需要提供用戶名/ root密碼來完成特定的任務,因此在使用SSH選項將把您的登錄信息以加密的方式,使你的密碼是安全的。
通過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
使用SSH將文件從本地服務器復制到遠程服務器
[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中
4.使用rsync傳輸數據時顯示進度
為了顯示進度,同時從一臺計算機傳送數據到不同的機器,我們可以用它‘-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
5.使用-include和-exclude選項
這兩個選項可以讓我們包括通過與這些選項可以幫助我們來指定要在同步納入和排除文件和文件夾,你不想被轉移這些文件或目錄指定參數排除文件。
在這裏,在這個例子中,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
6.使用-delete選項
如果文件或目錄在源處不存在,但在目標位置已存在,那麽在同步時可能需要刪除目標處的現有文件/目錄。
我們可以用‘-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。
7.設置要傳輸的文件的最大大小
您可以指定要傳輸的最大文件大小或同步。 你可以用“-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
8.成功傳輸後自動刪除源文件
現在,假設您有一個主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
9.使用rsync進行幹運行
如果你是一個新手,並使用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)
10.設置帶寬限制和傳輸文件
您可以同時從一臺機器與‘-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/
Rsync(遠程同步): inux中Rsync命令的實際示例