1、rsync 簡介html
Rsync(remote synchronize)是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件,也可使用 Rsync 同步本地硬盤中的不一樣目錄。
Rsync 是用於取代rcp的一個工具,Rsync使用所謂的 「Rsync 算法」 來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不一樣部分,而不是每次都整份傳送,所以速度至關快。
Rsync支持大多數的類Unix系統,不管是Linux、Solaris仍是BSD上都通過了良好的測試。此外,它在windows平臺下也有相應的版本,比較知名的有cwRsync和Sync2NAS。
Rsync 的初始做者是 Andrew Tridgell 和 Paul Mackerras,它當前由 http://rsync.samba.org維護。
Rsync的基本特色以下:
1. 能夠鏡像保存整個目錄樹和文件系統;
2. 能夠很容易作到保持原來文件的權限、時間、軟硬連接等;
3. 無須特殊權限便可安裝;
4. 優化的流程,文件傳輸效率高;
5. 可使用rcp、ssh等方式來傳輸文件,固然也能夠經過直接的socket鏈接;
6. 支持匿名傳輸,以方便進行網站鏡像。
在使用 rsync 進行遠程同步時,可使用兩種方式:遠程 Shell 方式(建議使用 ssh,用戶驗證由 ssh 負責)和 C/S 方式(即客戶鏈接遠程 rsync 服務器,用戶驗證由 rsync 服務器負責)。
不管本地同步目錄仍是遠程同步數據,首次運行時將會把所有文件拷貝一次,之後再運行時將只拷貝有變化的文件(對於新文件)或文件的變化部分(對於原有文件)。
rsync 在首次複製時沒有速度優點,速度不如 tar,所以當數據量很大時您能夠考慮先使用 tar 進行首次複製,而後再使用 rsync 進行數據同步。算法
2、系統環境vim
系統平臺:CentOS 6 rsync 版本:rsync-3.0.9-2.el6.rfx.x86_64.rpm rsync 服務器:TS-DEV (172.16.1.135) rsync 客戶端:TS-CLIENT (172.16.1.136)
3、服務器端安裝rsync服務windows
3.1. 檢查rsync 是否已經安裝centos
# rpm -qa|grep rsync
3.2. 下載RPM包安全
# wget http://pkgs.repoforge.org/rsync/rsync-3.0.9-2.el6.rfx.x86_64.rpm
3.3. 安裝rsync服務器
# rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm
4、配置 rsync 服務ssh
4.1. 配置 rsync 服務器的步驟socket
•首先要選擇服務器啓動方式
•對於負荷較重的 rsync 服務器應該使用獨立運行方式
•對於負荷較輕的 rsync 服務器可使用 xinetd 運行方式
•建立配置文件 rsyncd.conf
•對於非匿名訪問的 rsync 服務器還要建立認證口令文件工具
4.2. 以 xinetd 運行 rsync 服務
CentOS 默認以 xinetd 方式運行 rsync 服務。rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync。要配置以 xinetd 運行的 rsync 服務須要執行以下的命令:
# chkconfig rsync on # service xinetd restart
4.3. 獨立運行 rsync 服務
最簡單的獨立運行 rsync 服務的方法是執行以下的命令:
# /usr/bin/rsync --daemon
您能夠將上面的命令寫入 /etc/rc.local 文件以便在每次啓動服務器時運行 rsync 服務。
4.4. 配置文件rsyncd.conf
兩種 rsync 服務運行方式都須要配置 rsyncd.conf,配置文件 rsyncd.conf 默認在 /etc 目錄下,爲了將全部與 rsync 服務相關的文件放在單獨的目錄下,能夠執行以下命令:
# mkdir /etc/rsyncd # touch /etc/rsyncd/rsyncd.conf # ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
配置文件 rsyncd.conf 由全局配置和若干模塊配置組成。配置文件的語法爲:
•模塊以 [模塊名] 開始
•參數配置行的格式是 name = value ,其中 value 能夠有兩種數據類型:
•字符串(能夠不用引號定界字符串)
•布爾值(1/0 或 yes/no 或 true/false)
•以 # 或 ; 開始的行爲註釋
•\ 爲續行符
全局參數
在文件中 [module] 以外的全部配置行都是全局參數。固然也能夠在全局參數部分定義模塊參數,這時該參數的值就是全部模塊的默認值。
模塊參數
模塊參數主要用於定義 rsync 服務器哪一個目錄要被同步。模塊聲明的格式必須爲 [module] 形式,這個名字就是在 rsync 客戶端看到的名字,相似於 Samba 服務器提供的共享名。而服務器真正同步的數據是經過 path 來指定的。能夠根據本身的須要,來指定多個模塊,模塊中能夠定義如下參數:
a. 基本模塊參數
b. 模塊控制參數
c. 模塊文件篩選參數
•一個模塊只能指定一個exclude 參數、一個include 參數。
•結合 include 和 exclude 能夠定義複雜的exclude/include 規則 。
•這幾個參數分別與相應的rsync 客戶命令選項等價,惟一不一樣的是它們做用在服務器端。
d. 模塊用戶認證參數
•rsync 認證口令文件的權限必定是 600,不然客戶端將不能鏈接服務器。
•rsync 認證口令文件中每一行指定一個 用戶名:口令 對,格式爲:
username:passwd
•通常來講口令最好不要超過8個字符。若您只配置匿名訪問的 rsync 服務器,則無需設置上述參數。
e. 模塊訪問控制參數
客戶主機列表定義能夠是如下形式:
•單個IP地址。例如:192.168.0.1
•整個網段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0
•可解析的單個主機名。例如:centos,centos.bsmart.cn
•域內的全部主機。例如:*.bsmart.cn
•「*」則表示全部。
•多個列表項要用空格間隔。
f. 模塊日誌參數
設置了」log file」參數時,在日誌每行的開始會添加」%t [%p]「。
可使用的日誌格式定義符以下所示:
•%a - 遠程IP地址
•%h - 遠程主機名
•%l - 文件長度字符數
•%p - 該次 rsync 會話的 PID
•%o - 操做類型:」send」 或 「recv」
•%f - 文件名
•%P - 模塊路徑
•%m - 模塊名
•%t - 當前時間
•%u - 認證的用戶名(匿名時是 null)
•%b - 實際傳輸的字節數
•%c - 當發送文件時,記錄該文件的校驗碼
5、rsync 服務器應用案例
5.1. 在服務器端TS-DEV上配置rsync 服務
a. 編輯配置文件
# vi /etc/rsyncd/rsyncd.conf
# 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/rsyncd script # GLOBAL OPTIONS uid = root gid = root use chroot = no read only = yes #limit access to private LANs hosts allow=172.16.0.0/255.255.0.0 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 hosts deny=* max connections = 5 pid file = /var/run/rsyncd.pid secrets file = /etc/rsyncd/rsyncd.secrets #lock file = /var/run/rsync.lock motd file = /etc/rsyncd/rsyncd.motd #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 # MODULE OPTIONS [davidhome] path = /home/david/ list=yes ignore errors auth users = david comment = David home exclude = important/ [chinatmp] path = /tmp/china/ list=no ignore errors auth users = china comment = tmp_china
b. 創建/etc/rsyncd/rsyncd.secrets文件
# vim /etc/rsyncd/rsyncd.secrets
david:asdf #格式 用戶名:口令 china:jk #該用戶不要求是系統用戶
c. 爲了密碼的安全性,咱們把權限設爲600
# chown root:root /etc/rsyncd/rsyncd.secrets # chmod 600 /etc/rsyncd/rsyncd.secrets
d. 創建鏈接到服務器的客戶端看到的歡迎信息文件/etc/rsyncd/rsyncd.motd
# vim /etc/rsyncd/rsyncd.motd
+++++++++++++++++++++++++++ + David Camp + +++++++++++++++++++++++++++
e. 啓動rsync
# /etc/init.d/xinetd restart
f. 查看873端口是否起來
# netstat -an | grep 873
若是rsync啓動成功的話能夠看到873端口已經在監聽了。
g. 服務器端文件詳細
5.2. 客戶端配置
a. 客戶端安裝rsync
# yum -y install rsync
b. 經過rsync客戶端來同步數據
場景一:
在客戶端上面:
# rsync -avzP david@172.16.1.135::davidhome /tmp/david/
Password: 這裏要輸入david的密碼,是服務器端提供的,在前面的例子中,咱們用的是 asdf,輸入的密碼並不顯示出來;輸好後就回車;
注: 這個命令的意思就是說,用david 用戶登陸到服務器上,把davidhome數據,同步到本地目錄/tmp/david/上。固然本地的目錄是能夠你本身定義的,好比 dave也是能夠的;當你在客戶端上,當前操做的目錄下沒有davidhome這個目錄時,系統會自動爲你建立一個;當存在davidhome這個目錄中,你要注意它的寫權限。
說明:
-a 參數,至關於-rlptgoD,-r 是遞歸 -l 是連接文件,意思是拷貝連接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 至關於塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關係,本身試試。能夠看文檔;
場景二:
# rsync -avzP --delete david@172.16.1.135::davidhome /tmp/david/
這回咱們引入一個 –delete 選項,表示客戶端上的數據要與服務器端徹底一致,若是 /tmp/david/目錄中有服務器上不存在的文件,則刪除。最終目的是讓/tmp/david/目錄上的數據徹底與服務器上保持一致;用的時候要當心點,最好不要把已經有重要數所據的目錄,當作本地更新目錄,不然會把你的數據所有刪除;
場景三:
# rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/
此次咱們加了一個選項 –password-file=rsync.password ,這時當咱們以david用戶登陸rsync服務器同步數據時,密碼將讀取 /tmp/rsync.password 這個文件。這個文件內容只是david用戶的密碼。咱們要以下作;
# touch /tmp/rsync.password # chmod 600 /tmp/rsync.password # echo "asdf"> /tmp/rsync.password # rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/
注: 這樣就不須要密碼了;其實這是比較重要的,由於服務器經過crond 計劃任務仍是有必要的;
5.3. rsync 客戶端自動與服務器同步數據
編輯crontab
# crontab -e
加入以下代碼:
10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/
表示天天0點10分執行後面的命令。
1、rsync 簡介
Rsync(remote synchronize)是一個遠程數據同步工具,可經過LAN/WAN快速同步多臺主機間的文件,也可使用 Rsync 同步本地硬盤中的不一樣目錄。
Rsync 是用於取代rcp的一個工具,Rsync使用所謂的 「Rsync 算法」 來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不一樣部分,而不是每次都整份傳送,所以速度至關快。
Rsync支持大多數的類Unix系統,不管是Linux、Solaris仍是BSD上都通過了良好的測試。此外,它在windows平臺下也有相應的版本,比較知名的有cwRsync和Sync2NAS。
Rsync 的初始做者是 Andrew Tridgell 和 Paul Mackerras,它當前由 http://rsync.samba.org維護。
Rsync的基本特色以下:
1. 能夠鏡像保存整個目錄樹和文件系統;
2. 能夠很容易作到保持原來文件的權限、時間、軟硬連接等;
3. 無須特殊權限便可安裝;
4. 優化的流程,文件傳輸效率高;
5. 可使用rcp、ssh等方式來傳輸文件,固然也能夠經過直接的socket鏈接;
6. 支持匿名傳輸,以方便進行網站鏡像。
在使用 rsync 進行遠程同步時,可使用兩種方式:遠程 Shell 方式(建議使用 ssh,用戶驗證由 ssh 負責)和 C/S 方式(即客戶鏈接遠程 rsync 服務器,用戶驗證由 rsync 服務器負責)。
不管本地同步目錄仍是遠程同步數據,首次運行時將會把所有文件拷貝一次,之後再運行時將只拷貝有變化的文件(對於新文件)或文件的變化部分(對於原有文件)。
rsync 在首次複製時沒有速度優點,速度不如 tar,所以當數據量很大時您能夠考慮先使用 tar 進行首次複製,而後再使用 rsync 進行數據同步。2、系統環境
系統平臺:CentOS 6 rsync 版本:rsync-3.0.9-2.el6.rfx.x86_64.rpm rsync 服務器:TS-DEV (172.16.1.135) rsync 客戶端:TS-CLIENT (172.16.1.136)3、服務器端安裝rsync服務
3.1. 檢查rsync 是否已經安裝
# rpm -qa|grep rsync3.2. 下載RPM包
# wget http://pkgs.repoforge.org/rsync/rsync-3.0.9-2.el6.rfx.x86_64.rpm3.3. 安裝rsync
# rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm4、配置 rsync 服務
4.1. 配置 rsync 服務器的步驟
•首先要選擇服務器啓動方式
•對於負荷較重的 rsync 服務器應該使用獨立運行方式
•對於負荷較輕的 rsync 服務器可使用 xinetd 運行方式
•建立配置文件 rsyncd.conf
•對於非匿名訪問的 rsync 服務器還要建立認證口令文件4.2. 以 xinetd 運行 rsync 服務
CentOS 默認以 xinetd 方式運行 rsync 服務。rsync 的 xinetd 配置文件在 /etc/xinetd.d/rsync。要配置以 xinetd 運行的 rsync 服務須要執行以下的命令:
# chkconfig rsync on # service xinetd restart4.3. 獨立運行 rsync 服務
最簡單的獨立運行 rsync 服務的方法是執行以下的命令:
# /usr/bin/rsync --daemon您能夠將上面的命令寫入 /etc/rc.local 文件以便在每次啓動服務器時運行 rsync 服務。
4.4. 配置文件rsyncd.conf
兩種 rsync 服務運行方式都須要配置 rsyncd.conf,配置文件 rsyncd.conf 默認在 /etc 目錄下,爲了將全部與 rsync 服務相關的文件放在單獨的目錄下,能夠執行以下命令:
# mkdir /etc/rsyncd # touch /etc/rsyncd/rsyncd.conf # ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf配置文件 rsyncd.conf 由全局配置和若干模塊配置組成。配置文件的語法爲:
•模塊以 [模塊名] 開始
•參數配置行的格式是 name = value ,其中 value 能夠有兩種數據類型:
•字符串(能夠不用引號定界字符串)
•布爾值(1/0 或 yes/no 或 true/false)
•以 # 或 ; 開始的行爲註釋
•\ 爲續行符全局參數
在文件中 [module] 以外的全部配置行都是全局參數。固然也能夠在全局參數部分定義模塊參數,這時該參數的值就是全部模塊的默認值。
模塊參數
模塊參數主要用於定義 rsync 服務器哪一個目錄要被同步。模塊聲明的格式必須爲 [module] 形式,這個名字就是在 rsync 客戶端看到的名字,相似於 Samba 服務器提供的共享名。而服務器真正同步的數據是經過 path 來指定的。能夠根據本身的須要,來指定多個模塊,模塊中能夠定義如下參數:
a. 基本模塊參數
b. 模塊控制參數
c. 模塊文件篩選參數
•一個模塊只能指定一個exclude 參數、一個include 參數。
•結合 include 和 exclude 能夠定義複雜的exclude/include 規則 。
•這幾個參數分別與相應的rsync 客戶命令選項等價,惟一不一樣的是它們做用在服務器端。d. 模塊用戶認證參數
•rsync 認證口令文件的權限必定是 600,不然客戶端將不能鏈接服務器。
•rsync 認證口令文件中每一行指定一個 用戶名:口令 對,格式爲:
username:passwd
•通常來講口令最好不要超過8個字符。若您只配置匿名訪問的 rsync 服務器,則無需設置上述參數。e. 模塊訪問控制參數
客戶主機列表定義能夠是如下形式:
•單個IP地址。例如:192.168.0.1
•整個網段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0
•可解析的單個主機名。例如:centos,centos.bsmart.cn
•域內的全部主機。例如:*.bsmart.cn
•「*」則表示全部。
•多個列表項要用空格間隔。f. 模塊日誌參數
設置了」log file」參數時,在日誌每行的開始會添加」%t [%p]「。
可使用的日誌格式定義符以下所示:
•%a - 遠程IP地址
•%h - 遠程主機名
•%l - 文件長度字符數
•%p - 該次 rsync 會話的 PID
•%o - 操做類型:」send」 或 「recv」
•%f - 文件名
•%P - 模塊路徑
•%m - 模塊名
•%t - 當前時間
•%u - 認證的用戶名(匿名時是 null)
•%b - 實際傳輸的字節數
•%c - 當發送文件時,記錄該文件的校驗碼5、rsync 服務器應用案例
5.1. 在服務器端TS-DEV上配置rsync 服務
a. 編輯配置文件
# vi /etc/rsyncd/rsyncd.conf
# 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/rsyncd script # GLOBAL OPTIONS uid = root gid = root use chroot = no read only = yes #limit access to private LANs hosts allow=172.16.0.0/255.255.0.0 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 hosts deny=* max connections = 5 pid file = /var/run/rsyncd.pid secrets file = /etc/rsyncd/rsyncd.secrets #lock file = /var/run/rsync.lock motd file = /etc/rsyncd/rsyncd.motd #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 # MODULE OPTIONS [davidhome] path = /home/david/ list=yes ignore errors auth users = david comment = David home exclude = important/ [chinatmp] path = /tmp/china/ list=no ignore errors auth users = china comment = tmp_chinab. 創建/etc/rsyncd/rsyncd.secrets文件
# vim /etc/rsyncd/rsyncd.secretsdavid:asdf #格式 用戶名:口令 china:jk #該用戶不要求是系統用戶c. 爲了密碼的安全性,咱們把權限設爲600
# chown root:root /etc/rsyncd/rsyncd.secrets # chmod 600 /etc/rsyncd/rsyncd.secretsd. 創建鏈接到服務器的客戶端看到的歡迎信息文件/etc/rsyncd/rsyncd.motd
# vim /etc/rsyncd/rsyncd.motd+++++++++++++++++++++++++++ + David Camp + +++++++++++++++++++++++++++e. 啓動rsync
# /etc/init.d/xinetd restartf. 查看873端口是否起來
# netstat -an | grep 873若是rsync啓動成功的話能夠看到873端口已經在監聽了。
g. 服務器端文件詳細
5.2. 客戶端配置
a. 客戶端安裝rsync
# yum -y install rsync
b. 經過rsync客戶端來同步數據
場景一:
在客戶端上面:
# rsync -avzP david@172.16.1.135::davidhome /tmp/david/
Password: 這裏要輸入david的密碼,是服務器端提供的,在前面的例子中,咱們用的是 asdf,輸入的密碼並不顯示出來;輸好後就回車;注: 這個命令的意思就是說,用david 用戶登陸到服務器上,把davidhome數據,同步到本地目錄/tmp/david/上。固然本地的目錄是能夠你本身定義的,好比 dave也是能夠的;當你在客戶端上,當前操做的目錄下沒有davidhome這個目錄時,系統會自動爲你建立一個;當存在davidhome這個目錄中,你要注意它的寫權限。
說明:
-a 參數,至關於-rlptgoD,-r 是遞歸 -l 是連接文件,意思是拷貝連接文件;-p 表示保持文件原有權限;-t 保持文件原有時間;-g 保持文件原有用戶組;-o 保持文件原有屬主;-D 至關於塊設備文件;
-z 傳輸時壓縮;
-P 傳輸進度;
-v 傳輸時的進度等信息,和-P有點關係,本身試試。能夠看文檔;場景二:
# rsync -avzP --delete david@172.16.1.135::davidhome /tmp/david/
這回咱們引入一個 –delete 選項,表示客戶端上的數據要與服務器端徹底一致,若是 /tmp/david/目錄中有服務器上不存在的文件,則刪除。最終目的是讓/tmp/david/目錄上的數據徹底與服務器上保持一致;用的時候要當心點,最好不要把已經有重要數所據的目錄,當作本地更新目錄,不然會把你的數據所有刪除;場景三:
# rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/
此次咱們加了一個選項 –password-file=rsync.password ,這時當咱們以david用戶登陸rsync服務器同步數據時,密碼將讀取 /tmp/rsync.password 這個文件。這個文件內容只是david用戶的密碼。咱們要以下作;# touch /tmp/rsync.password # chmod 600 /tmp/rsync.password # echo "asdf"> /tmp/rsync.password # rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/注: 這樣就不須要密碼了;其實這是比較重要的,由於服務器經過crond 計劃任務仍是有必要的;
5.3. rsync 客戶端自動與服務器同步數據
編輯crontab
# crontab -e
加入以下代碼:10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/表示天天0點10分執行後面的命令。