本文參考原博主:http://shitouququ.blog.51cto.com 的博文進行實踐.在此謝過.
RSYNC簡介:
Rsync (remote sync)是一款開源、快速,多功能、可實現增量的本地或遠程數據鏡像同步備份優秀工具。它可通過 LAN/WAN 快速同步多臺主機間的文件。Rsync 本來是用以取代rcp 的一個工具,它當前由 Rsync.samba.org 維護。Rsync 使用所謂的“Rsync演算法”來使本地和遠程主機之間的文件達到同步,該算法只傳送兩個文件中的不同部分,而不是每次都整份傳送,因此速度相當快。
Rsync支持大多數的類 Unix 系統,無論是 Linux、Solaris 還是 BSD 上都經過了良好的測試。此外,它在windows 平臺下也有相應的版本,比較知名的有 cwRsync 和 Sync2NAS。
RSYNC的特性:
1、支持拷貝特殊文件如鏈接、設備等。
2、可以有排除制定文件或目錄同步的功能,相當於打包命令tar。
3、可以做到保持原來文件或目錄的權限、時間、軟硬連接等所有屬性均不改變。
4、可實現增量同步,既只同步發生變化的數據,因此數據傳輸效率很高。
5、可以使用rcp,rsh,ssh等方式配合傳輸文件,也可以通過直接的socket連接。
6、支持匿名的或認證的進程模式傳輸,方便進行數據備份及鏡像
7、優化的流程,文件傳輸效率高
RSYNC工作模式:
Rsync有四種工作模式,具體如下:
1、列表模式
和ls -l相似,負責列出源的內容。不僅可以看本地還可以看遠端。
2、shell模式,也稱爲本地模式
和cp相似,本地拷貝文件
3、遠程shell模式,可以通過通過rcp,ssh等通道傳輸
和rcp相似,不過可以實現增量備份,並且能夠通過安全的ssh方式進行數據傳輸。
4、服務器模式
在這種模式下,rsync 守護進程在一臺機器上永久運行,接收文件傳輸請求。可以把文件發送給守護進程,也可以向它請求文件。服務器模式非常適合創建中心備份服務器或項目存儲庫
安裝rsync
先檢查系統有沒有安裝: rpm -qa rsync
如有返回,則系統已經安裝過.
安裝rsync有兩種方式 .一種是yum安裝,另一種是編譯安裝
yum安裝:
yum install -y rsync
編譯安裝:
#安裝GCC和庫文件: yum install -y kernel-headers glibc-headers glibc-devel libgomp gcc gcc-c++ #安裝rsync wget http://rsync.samba.org/ftp/rsync/rsync-3.1.1.tar.gz tar zxvf rsync-3.1.1.tar.gz cd rsync-3.1.1 ./configure --prefix=/usr/local/rsync make && make install
1、列表模式
Rsync的列表模式,即等同於在實現 ls -l 的功能。我們可以通過分別執行rsync和ls命令來觀察區別。
[root@localhost /]# rsync /usr/ drwxr-xr-x 4096 2014/07/10 10:46:05 . lrwxrwxrwx 10 2014/07/10 10:46:05 tmp dr-xr-xr-x 12288 2014/07/11 11:18:17 bin drwxr-xr-x 4096 2011/09/23 19:50:20 etc drwxr-xr-x 4096 2011/09/23 19:50:20 games drwxr-xr-x 4096 2014/07/10 10:47:29 include dr-xr-xr-x 4096 2014/07/10 10:47:49 lib dr-xr-xr-x 12288 2014/07/11 11:18:17 lib64 drwxr-xr-x 4096 2014/07/10 10:50:37 libexec drwxr-xr-x 4096 2014/07/10 10:46:05 local dr-xr-xr-x 4096 2014/07/10 15:25:46 sbin drwxr-xr-x 4096 2014/07/10 10:50:36 share drwxr-xr-x 4096 2014/07/10 10:46:05 src [root@localhost /]# ll /usr/ total 60 dr-xr-xr-x. 2 root root 12288 Jul 11 11:18 bin drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc drwxr-xr-x. 2 root root 4096 Sep 23 2011 games drwxr-xr-x. 3 root root 4096 Jul 10 10:47 include dr-xr-xr-x. 9 root root 4096 Jul 10 10:47 lib dr-xr-xr-x. 21 root root 12288 Jul 11 11:18 lib64 drwxr-xr-x. 9 root root 4096 Jul 10 10:50 libexec drwxr-xr-x. 12 root root 4096 Jul 10 10:46 local dr-xr-xr-x. 2 root root 4096 Jul 10 15:25 sbin drwxr-xr-x. 55 root root 4096 Jul 10 10:50 share drwxr-xr-x. 4 root root 4096 Jul 10 10:46 src lrwxrwxrwx. 1 root root 10 Jul 10 10:46 tmp -> ../var/tmp [root@localhost /]# ls -l /usr/ total 60 dr-xr-xr-x. 2 root root 12288 Jul 11 11:18 bin drwxr-xr-x. 2 root root 4096 Sep 23 2011 etc drwxr-xr-x. 2 root root 4096 Sep 23 2011 games drwxr-xr-x. 3 root root 4096 Jul 10 10:47 include dr-xr-xr-x. 9 root root 4096 Jul 10 10:47 lib dr-xr-xr-x. 21 root root 12288 Jul 11 11:18 lib64 drwxr-xr-x. 9 root root 4096 Jul 10 10:50 libexec drwxr-xr-x. 12 root root 4096 Jul 10 10:46 local dr-xr-xr-x. 2 root root 4096 Jul 10 15:25 sbin drwxr-xr-x. 55 root root 4096 Jul 10 10:50 share drwxr-xr-x. 4 root root 4096 Jul 10 10:46 src lrwxrwxrwx. 1 root root 10 Jul 10 10:46 tmp -> ../var/tmp [root@localhost /]#
另外,rsync的列表模式是支持對遠端的目錄進行查看的,而ls -l是不具備這個功能的。
2、Shell模式
首先來看下 RSYNC 的命令語法:
rsync [OPTION]... SRC [SRC]... DEST
rsync 參數詳解:
-v, --verbose 詳細模式輸出
-q, --quiet 精簡輸出模式
-c, --checksum 打開校驗開關,強制對文件傳輸進行校驗
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
-r, --recursive 對子目錄以遞歸模式處理
-R, --relative 使用相對路徑信息
rsync foo/bar/foo.c remote:/tmp/
Rsync 參數在/tmp目錄下創建foo.c文件,而如果使用-R參數:
rsync -R foo/bar/foo.c remote:/tmp/
Rsync 參數會創建文件/tmp/foo/bar/foo.c,也就是會保持完全路徑信息。
-b, --backup 創建備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名爲~filen ame。可以使用--suffix選項來指定不同的備份文件前綴。
--backup-dir 將備份文件(如~filename)存放在在目錄下。
-suffix=SUFFIX 定義備份文件前綴
-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件。(不 覆蓋更新的文件)
--copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結
-l, --links 保留軟鏈結
-L, --copy-links 想對待常規文件一樣處理軟鏈結
--safe-links 忽略指向SRC路徑目錄樹以外的鏈結
-H, --hard-links 保留硬鏈結
-p, --perms 保持文件權限
-o, --owner 保持文件屬主信息
-g, --group 保持文件屬組信息
-D, --devices 保持設備文件信息
-t, --times 保持文件時間信息
-S, --sparse 對稀疏文件進行特殊處理以節省DST的空間
-n, --dry-run現實哪些文件將被傳輸
-W, --whole-file 拷貝文件,不進行增量檢測
-x, --one-file-system 不要跨越文件系統邊界
-B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節
-e, --rsh=COMMAND 指定替代rsh的shell程序
--rsync-path=PATH 指定遠程服務器上的rsync命令所在路徑信息
-C, --cvs-exclude 使用和CVS一樣的方法自動忽略文件,用來排除那些不希望傳輸的文件
--existing 僅僅更新那些已經存在於DST的文件,而不備份那些新創建的文件
--delete 刪除那些DST中SRC沒有的文件
--delete-excluded 同樣刪除接收端那些被該選項指定排除的文件
--delete-after 傳輸結束以後再刪除
--ignore-errors 及時出現IO錯誤也進行刪除
--max-delete=NUM 最多刪除NUM個文件
--partial 保留那些因故沒有完全傳輸的文件,以是加快隨後的再次傳輸
--force 強制刪除目錄,即使不爲空
--numeric-ids 不將數字的用戶和組ID匹配爲用戶名和組名
--timeout=TIME IP超時時間,單位爲秒
-I, --ignore-times 不跳過那些有同樣的時間和長度的文件
--size-only 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間
--modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,默認爲0
-T --temp-dir=DIR 在DIR中創建臨時文件
--compare-dest=DIR 同樣比較DIR中的文件來決定是否需要備份
-P 等同於 --partial
--progress 顯示備份過程
-z, --compress 對備份的文件在傳輸時進行壓縮處理
--exclude=PATTERN 指定排除不需要傳輸的文件模式
--include=PATTERN 指定不排除而需要傳輸的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 綁定到特定的地址
--config=FILE 指定其他的配置文件,不使用默認的rsyncd.conf文件
--port=PORT 指定其他的rsync服務端口
--blocking-io 對遠程shell使用阻塞IO
-stats 給出某些文件的傳輸狀態
--progress 在傳輸時現實傳輸過程
--log-format=FORMAT 指定日誌文件格式
--password-file=FILE 從FILE中得到密碼
--bwlimit=KBPS 限制I/O帶寬,KBytes per second
需要注意的是:rsync命令在使用中,如果源參數的末尾有斜線,就會複製指定目錄內的內容,而不復制目錄本身;如果沒有斜線,則會複製目錄本身。目標參數的末尾有沒有斜線都不影響。
[root@localhost rsync]# rsync -a test1/ test2/ [root@localhost rsync]# ll test2/ -rwxrwxrwx 1 root root 0 Jul 10 15:21 123 -rwxrwxrwx 1 root root 0 Jul 10 15:20 test [root@localhost rsync]# rsync -a test1 test2/ [root@localhost rsync]# ll test2/ total 4 drwxr-xr-x 2 root root 4096 Jul 10 15:21 test1
3、遠程shell模式
遠程shell模式的話,和shell模式是異曲同工。只不過,因爲是要通過遠程,因此我們需要指定遠程主機的IP,如果採用ssh我們還需要指定ssh的端口等等。
遠程shell模式,常規分爲如下兩種情況,其語法分別爲:
拉取pull :rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST 推送push:rsync [OPTION]... [USER@]HOST:SRC [DEST] 下面爲大家拆解一下命令: |
大家可以發現,拉取和推送,不一樣的地方就是源和目標換了位置。其中拉取,表示從遠端主機把數據同步到執行命令的本地主機相應目錄。(需要注意,拉取的話,遠端主機上一定要安裝rsync,不然會拉取失敗)。推送,表示從本地主機執行命令把本地的數據同步到遠端主機指定目錄下
遠程模式案例:
將192.168.1.34這臺服務器的/etc 目錄備份到192.168.1.35 這臺服務器的/opt/backup 目錄下.
具體實現如下 :
在服務器192.168.1.35上執行命令:
# rsync -vzrtopg --progress -e 'ssh -p 22' [email protected]:/etc /opt/backup/ 語法說明: 1)-vzrtopg 相當於上文的-avz,表示同步時文件和目錄屬性不變。 2)--progress 顯示同步的過程,可以用-p替換 3)-e ‘ssh -p 22’,表示通過ssh的通道傳輸數據。如果ssh是默認的22號端口,此處的-p 22可省略。 4) [email protected]:/etc 遠程的主機用戶,地址,路徑 5)/backup本地(192.168.1.35)的路徑
推送實例:
在服務器192.168.1.34上執行命令:
#rsync -avz --progress -e 'ssh -p 22' /opt/backup/ [email protected]:/opt
4、服務模式
RSYNC的服務模式,部署時分爲rsync的服務端和rsync的客戶端。需要注意的是,rsync 的服務端和客戶端都是一個軟件包,如果你啓用了 rsync 的服務模式,則該主機就變成 rsync 服務器。因此我們需要將 rsync 分別安裝於服務端和客戶端,服務端和客戶端使用同一個 rsync 軟件包來實現遠程鏡像和定期同步更新。
rsync 服務端可同時備份多個客戶端的數據,多個服務端備份一個客戶端的數據。 rsync 默認端口爲 873,服務器在該端口接收客戶的匿名或者認證方式的備份請求。
rsync 服務端在使用之前需要進行必要的配置,其配置文件爲 /etc/rsyncd.conf,該文件默認沒有,需要自己手動創建。Rsync服務端通過/etc/rsyncd.conf進行認證、訪問、日誌記錄等控制,該配置文件包括全局參數、模塊參數等設置。
rsyncd.conf 文件中 [module] 之前的所有參數爲全局參數,也可以在全局參數部分定義模塊參數。在這種情況下該參數的值就是所有模塊的默認值。全局參數設置程序使用的端口號,指定消息文件、日誌文件 pid 文件以及發送日誌消息的級別。模塊參數主要定義服務端哪個目錄需要被同步。用戶可根據不同的需要指定多個模塊,每個模塊對應需要備份的一個目錄樹,即若有 N 個需要備份的目錄樹,則需要 N 個模塊與之對應。模塊中可以定義許多參數。下面,我們拿出來一個rsyncd.conf文件,來給大家做詳解:
uid = rsync # 指定的模塊傳輸文件時所用的用戶身份 gid = rsync # 指定的site模塊傳輸文件時所用的用戶組身份 port=873 # 默認端口 use chroot = no # 默認爲true,修改爲no,增加對目錄文件軟連接的備份 max connections = 200 # 指定最大併發連接數以保護服務器,超過限制的連接請求將被告知隨後再試。默認值爲 0,即沒有限制 timeout = 300 # 服務器會話的超時時間 pid file = /var/run/rsyncd.pid # 進程啓動後,進程號存放路徑 lock file = /var/run/rsyncd.lock # 服務啓動、停止會用到鎖文件 log file = /var/log/rsyncd.log # 指定日誌文件的路徑 Log fromat = %h %o %f %l %b # 指定日誌記錄的格式 motd file = /etc/rsyncd.motd # 登陸消息提示文件,可以不配置。默認爲空。 [test] # 模塊名稱,名稱可以任意寫,不過一般是以路徑命名,最好見名意 Comment = test # 模塊信息描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。默認沒有描述定義 path=/test/ # 指定供備份的目錄路徑,必須指定該參數。該目錄路徑是rsync服務端的一個路徑,提供給客戶端上傳或下載 ignore erros # 忽略錯誤 read only = false # 設定是否允許客戶上載文件。若爲 true 任何上載請求均會失敗,若爲 false 且客戶端擁有服務器目錄讀寫權限則可以上載。默認值爲 true 。 write only 設定是否允許客戶下載文件。若爲 true 任何下載請求均會失敗,默認值爲 false 。 list = false # 設定當客戶請求可以使用的模塊列表時,是否列出該模塊。若爲 false,則創建隱藏的模塊。默認值爲 true hosts allow=192.168.137.0/24 # 指定允許客戶連接的 IP 地址。可以爲單個 IP 地址或整個網段。多個 IP 或網段需要以空格隔開。默認是允許所有主機連接。 hosts deny=* # 指定拒絕連接的客戶IP地址,設置方式和hosts allow相同。 Dont commpress # 指定不進行壓縮處理即可傳輸的文件,默認值是 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz auth users = rsync_backup # 該選項指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊。這裏的用戶不一定是客戶端存在的用戶。如果"auth users"被設置,那麼客戶端發出對該模塊的連接請求時,需要對用戶身份進行驗證。用戶的名和密碼以明文方式存放在"secrets file"選項指定的文件中。默認情況下無需密碼就可以連接模塊 ( 也就是匿名方式 )。 secrets file = /etc/rsync.password # 虛擬用戶的密碼文件 exclude = common/ # 用來指定多個由空格隔開的多個文件或目錄 ( 相對路徑 ),並將其添加到 exclude 列表中。這等同於在客戶端命令中使用 --exclude 參數。一個模塊只能指定一個 exclude 選項。但是需要注意的一點是該選項有一定的安全性問題,客戶端很有可能繞過 exclude 列表,如果希望確保特定的文件不能被訪問,那就最好結合 uid/gid 選項一起使用。 pre-xfer exec, post-xfer exec # 設置可在文件傳輸前/後執行的命令。若在文件傳輸前執行的命令失敗,則取消本次傳輸操作
下面,就配置rsync服務端跟客戶端:
環境: rsync_server :192.168.1.34 centos6.5
rsync_client:192.168.1.35 centos6.5
一.RSYNC 服務端部署:
1、安裝rsync,並且配置服務端主配置文件
[root@localhost ~]# yum install rsync -y [root@localhost ~]# vim /etc/rsyncd.conf #注:yum安裝後/etc目錄下沒有rsyncd.conf ,我們就手動添加它! uid = root gid = root use chroot = no max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors read only = false list = false hosts allow = 192.168.1.0/24 hosts deny = * auth users = rsync secrets file = /etc/rsync.password [sunsky] path = /test
2、創建 rsync.password 作爲用戶密碼文件
[root@localhost rsync]# touch /etc/rsync.password [root@localhost rsync]# chmod 600 /etc/rsync.password [root@localhost rsync]# vi /etc/rsync.password [root@localhost rsync]# cat /etc/rsync.password rsync:123456
3.創建模塊中指定的文件
[root@localhost ~]# mkdir /test [root@localhost ~]# chown root:root /test #更改目錄的權限爲rsyncd.conf中uid和gid指定屬主和屬組
4、以守護進程方式啓動 rsync
Rsync服務端的啓動分2種,一種是交給 xinetd 去管理,另外就是自己手動配置守護進程。
A、手動配置rsync守護進程
[root@localhost ~]#/usr/bin/rsync --daemon --config=/etc/rsyncd.conf #注意如果你的rsyncd.conf文件在/etc/目錄下,就不需要再用--config去指定了。--daemon是以守護進程的方式啓動
我們可以將上面的命令寫入 /etc/rc.local 中,這樣當系統啓動時,就會自動以守護進程的方式去運行 rsync。
補充:
重啓rsync的組合命令
[root@localhost ~]# pkill rsync #關閉rsync服務 [root@localhost ~]# rsync --daemon #啓動rsync服務 [root@localhost ~]# ps -ef | grep rsync #檢查是否啓動
B、交由xinetd管理
[root@localhost ~]# yum install xinetd #安裝xinetd [root@localhost ~]# vim /etc/xinetd.d/rsync 添加: disable= no # 默認爲yes,需要將他設置爲no,讓xinetd接管rsync服務。注意,如果你使用手動的方式,這裏就修改爲no,即拒絕xinetd接管rsync服務。 [root@localhost ~]# /etc/init.d/xinetd start # 啓動xinetd服務,則默認會以守護進程方式啓動rsync 服務
5、檢查服務狀態
lsof -i:873 或者: netstat -lntup |grep 873
補充:
手動啓動rsync的常見參數:
[root@rsync-server ~]# rsync --daemon # daemon 表示以守護進程的方式啓動rsync服務 常用啓動參數: --daemon # 表示以守護進程的方式啓動rsync服務 --address # 綁定指定ip地址提供服務,即服務器是多網卡模式或多虛擬IP模式,需要指定某個固定ip提供服務 --config=FILE # 更改配置文件路徑,而不去使用默認的/etc/rsyncd.conf --port=PORT # 更改其它端口提供服務,而不去使用模式的873端口。
以上即爲rsync服務端的整個配置步驟了!
RSYNC 服務端已經部署完畢,接下來如果要使用的話,肯定還需要搭配 rsync 客戶端才行!下面就來看,rsync客戶端怎麼部署!
二.RSYNC 客戶端部署
RSYNC 客戶端部署起來非常簡單,我們僅僅需要安裝 rsync 軟件,然後創建一個本地密碼文件。該密碼文件爲對應rsync 服務端配置文件裏面每個模塊下面的虛擬用戶的密碼,以此來實現免密碼同步!
1. 安裝rsync: yum install -y rsync
2、配置本地密碼文件: vi /etc/rsync.password
#添加服務端的密碼就行了
[root@localhost ~]# cat /etc/rsync.password 123456
到此,服務端跟客戶端都配置完成!
下面進行測試 :
我們需要去rsync客戶端,來完成下面的測試操作。需要注意,測試同樣分爲兩種情況,每種情況又有兩種語法寫法,分別爲:
拉取:
rsync
[OPTION...] [USER@]HOST::SRC... [DEST]
rsync
[OPTION...]
rsync
:
//
[USER@]HOST[:PORT]
/SRC
... [DEST]
推送:
rsync
[OPTION...] SRC... [USER@]HOST:DEST
rsync
[OPTION...] SRC...
rsync
:
//
[USER@]HOST[:PORT]
/DEST
特別值得注意的是,與遠程shell模式命令不同的是,第①種語法格式, [USER@]HOST::SRC和 [USER@]HOST::DEST結尾處,均爲雙冒號連接SRC或DEST。另外,這個SRC或DEST已經不再是路徑了,而是守護進程中配置的模塊的名稱了。
實例:
第一種格式:
拉取:
rsync -avzP [email protected]::sunsky /test/ --password-file=/etc/rsync.password
推送:
rsync -avzP /test/ [email protected]::sunsky --password-file=/etc/rsync.password
第二種格式:
拉取:
rsync
-avzP
rsync
:
//rsync
@192.168.1.34:
/sunsky/
/test/
--password-
file
=
/etc/rsync
.password
rsync
-avzP
/test/
rsync
:
//
rsync
@192.168.1.34:
/sunsky/
--password-
file
=
/etc/rsync
.password
--delete的操作效果
--delete 使同步的兩個文件夾一致:
現在查看rsync 客戶端/test目錄裏的內容:
[root@localhost test]# ll /test total 0 -rw-r--r-- 1 root root 0 Jul 14 10:41 1111 -rw-r--r-- 1 root root 0 Jul 14 11:12 123456 -rw-r--r-- 1 root root 0 Jul 14 11:12 a -rw-r--r-- 1 root root 0 Jul 14 11:12 b -rw-r--r-- 1 root root 0 Jul 11 17:57 dfadaf -rw-r--r-- 1 root root 0 Jul 14 10:39 dfadafdfaf
查看rsync 服務端端/test目錄裏的內容:
[root@localhost test]# ll /test/ total 0 -rw-r--r-- 1 root root 0 Jul 14 10:41 1111 -rw-r--r-- 1 root root 0 Jul 11 17:57 dfadaf -rw-r--r-- 1 root root 0 Jul 14 10:39 dfadafdfaf
兩個文件夾不一致.現在客戶端執行拉取命令:
[root@localhost test]# rsync -avzP --delete [email protected]::sunsky /test/ --password-file=/etc/rsync.password receiving incremental file list deleting b deleting a deleting 123456 ./ sent 60 bytes received 143 bytes 406.00 bytes/sec total size is 0 speedup is 0.00
再看看客戶端/test目錄下的文件
[root@localhost test]# ll /test/ total 0 -rw-r--r-- 1 root root 0 Jul 14 10:41 1111 -rw-r--r-- 1 root root 0 Jul 11 17:57 dfadaf -rw-r--r-- 1 root root 0 Jul 14 10:39 dfadafdfaf
不一致的內容已經被刪除!反之,執行推送命令將刪除服務端/test目錄中與客戶端/test目錄不一致的文件;
--exclude的操作效果
--exclude 爲排除命令,指定的文件將不會被拉取或推送;
rsync客戶端:
[root@localhost test]# tree /test /test ├── 1111 ├── 1.txt ├── a │ └── a.txt ├── dfadaf └── dfadafdfaf 1 directory, 5 files
rsync 服務端:
[root@localhost test]# tree /test /test 0 directories, 0 files
以上爲操作前的環境,請保持這個環境一致,然後做如下操作:
在rsync客戶端做推送操作:
[root@localhost test]# rsync -avz --exclude=*.txt /test/ [email protected]:/test/ [email protected]'s password: sending incremental file list ./ 1111 dfadaf dfadafdfaf a/ sent 217 bytes received 76 bytes 65.11 bytes/sec total size is 0 speedup is 0.00
再查看服務端/test目錄
[root@localhost test]# tree /test /test ├── 1111 ├── a ├── dfadaf └── dfadafdfaf 1 directory, 3 files
我們可以發現,只要是能被*.txt匹配到的都沒有被推送過去!
如果說,你有很多需要排除的目錄或者文件,不希望他們被同步過去,此時你可以使用--exclude-from參數,該參數後面跟一個文件,你可以將需要匹配排除的項寫到該文件裏面!