【教程主題】:rsynclinux
【1】 rsync介紹算法
Rsync(Remote Synchronize) 是一個遠程資料同步工具,可經過LAN/WAN快速同步多臺主機,Rsync使用所爲的「Rsync演算法」來使本地主機和遠程主機之間達到同步,這個演算法並非每次都整份傳送,它只傳送兩臺計算機之間所備份的資料不一樣的部分,所以速度至關快。sql
Rsync的優勢以下:vim
1、能夠鏡像保存整個目錄樹和文件系統。安全
2、能夠很容易的作到保持原來文件的許可權、時間、軟連接等。服務器
3、無須特使許可權便可安裝。socket
4、擁有優化的流程,文件傳輸效率高。工具
5、可使用Rsh、SSH等方式來傳輸文件,固然也能夠直接經過Socket鏈接。測試
6、支持匿名傳輸。優化
另外,與SCP相比,傳輸速度不是一個層次級的。咱們在局域網時常常用Rsync和SCP傳輸大量Mysql數據,發現Rsync至少比Scp快20倍以上,因此你們若是須要在Linux/Unix服務器之間互傳海量資料,Rsync是很是好的選擇。
【2】 rsync服務端方式
首先檢查rsync是否安裝:
rpm –q rsync
rsync-2.6.8-3.1
說明rsync已安裝,若是提示出現 package rsync is not installed 則說明這個軟件報沒有安裝你們可使用yum進行安裝
另外,關閉防火牆和SElinux,由於是內網中傳輸,因此這些不必
service iptables stop && chkconfig iptables off
setenforce 0
配置文件/etc/rsyncd.conf。這個文件是本身定義的,並非系統建立的,固然你也能夠叫不一樣的名字,後面再寫上詳細註釋。
uid = nobody
gid = nobody
user chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[backup]
path=/backup/
ignore errors
read only = no
list = no
hosts allow = 192.168.0.0/255.255.255.0
auth users = test
secrets file = /etc/rsyncd.password
註釋:
uid = nobody
進行備份的用戶,nobody 爲任何用戶
gid = nobody
進行備份的組,nobody爲任意組
use chroot = no
若是"use chroot"指定爲true,那麼rsync在傳輸文件之前首先chroot到path參數所指定的目錄下。這樣作的緣由是實現額外的安全防禦,可是缺點是須要以root權限,而且不能備份指向外部的符號鏈接所指向的目錄文件。默認狀況下chroot值爲true.可是這個通常不須要,我選擇no或false
list = no
不容許列清單
max connections = 200
最大鏈接數
timeout = 600
覆蓋客戶指定的IP超時時間,也就是說rsync服務器不會永遠等待一個崩潰的客戶端。
pidfile = /var/run/rsyncd.pid
pid文件的存放位置
lock file = /var/run/rsync.lock
鎖文件的存放位置
log file = /var/log/rsyncd.log
日誌文件的存放位置
[backup]
這裏是認證模塊名,即跟samba語法同樣,是對外公佈的名字
path = /backup/
這裏是參與同步的目錄
ignore errors
能夠忽略一些無關的IO錯誤
read only = no
容許可讀可寫
list = no
不容許列清單
hosts allow = 192.168.1.0/255.255.255.0
這裏跟samba的語法是同樣的,只容許192.168.21.0/24的網段進行同步,拒絕其它一切
auth users = test
認證的用戶名
secrets file = /etc/rsyncd.password
密碼文件存放地址
注意:
一、[backup] 認證模塊名和 path = /backup/ 參與同步的目錄
這裏的path 你們要記好了,這裏不要隨便的一設置就直接完事,要知道這裏是認證模塊的,之後從客戶機備份的數據會存儲在這裏。
二、auth users = redhat 認證的用戶名
這個名字是服務器端實實在在存在用戶,你們不要直接跟步驟走卻忽略了這點。若是服務器端少了這個的話我估計你的數據同步就實現不了,你們要謹記。
三、path = /backup/ 參與同步的目錄
這個須要稍後本身要在根目錄下本身建
cd /
mkdir backup
chmod –R 777 /backup
echo 「test:test」 > /etc/rsync.password
(這裏我設置的是用戶名和密碼一致)
爲了安全起見,我設置他的權限爲600
chmod 600 /etc/rsync.password
啓動配置
[root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync
配置rsync servervi /etc/xinetd.d/rsync
將disable=yes改成no
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
[root@test home]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
若是xinetd沒有的話,須要安裝一下
[root@test home]# yum -y install xinetd
RSYNC服務端啓動的兩種方法:
啓動rsync服務端(獨立啓動)
[root@test home]# /usr/bin/rsync --daemon on
啓動rsync服務端 (有xinetd超級進程啓動)
[root@test home]# /etc/init.d/xinetd reload
配置rsync自動啓動
[root@test etc]# chkconfig rsync on
[root@test etc]# chkconfig rsync --list
rsync
加入rc.local
在各類操做系統中,rc文件存放位置不盡相同,能夠修改使系統啓動時把rsync --daemon加載進去。
[root@test home]# vi /etc/rc.local
/usr/local/rsync –daemon #加入一行
客戶端配置:
echo 「test」 > /etc/rsyncd.password
這裏僅僅只須要密碼,不須要用戶了,省得要同步時還要手動互動
chmod 600 /etc/rsync.password
測試:
rsync -vzrtop --delete /home/ce test@192.168.0.206::backup --password-file=/etc/rsyncd.password
從服務器上下載文件
rsync -avz --password-file=/etc/rsyncd.password test@192.168.0.206::backup /home/
從本地上傳到服務器上去
rsync -avz --password-file=/etc/rsyncd.password /home test@192.168.0.206::backup
【3】rsync客戶端方式
經常使用:rsync -av
下載:rsync [參數] 遠程文件(遠程路徑) 本地目錄
上傳:rsync [參數] 本地文件 遠程目錄
rsync經常使用參數
若是不須要交互式的操做,rsync平時也能夠像scp那樣工做,下列爲經常使用rsync參數。
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD
-v --verbose:詳細模式輸出
-r --recursive:對子目錄以返回模式處理。
-p --perms:保持文件許可權
-o --owner:保持文件屬主信息
-g --group:保持文件組信息
-t --times:保持文件時間信息
--delete:刪除哪些DST中存在而SRC中不存在的文件或目錄
--delete-excluded:一樣刪除接收端哪些該選項制定排出的文件
-z --compress:對備份的文件在傳輸時進行壓縮處理
--exclude=PATTERN:制定排除不須要傳輸的文件
--include=PATTERN:制定不排除須要傳輸的文件
--exclude-from=FILE:排除FILE中制定模式的文件
--include-from=FILE:不排除FILE中制定模式匹配的文件