【教程主題】:rsync
【課程錄製】: 創E
【主要內容】
【1】 rsync介紹
Rsync(Remote Synchronize) 是一個遠端資料同步工具,可透過LAN/WAN快速同步多臺主機,Rsync使用所為的“Rsync演演算法”來使本地主機和遠端主機之間達到同步,這個演演算法並不是每次都整份傳送,它只傳送兩臺計算機之間所備份的資料不同的部分,因此速度相當快。
Rsync的優點如下:
1、可以映象儲存整個目錄樹和檔案系統。
2、可以很容易的做到保持原來檔案的許可權、時間、軟連結等。
3、無須特使許可權即可安裝。
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
密碼檔案存放地址
注意:
1、[backup] 認證模組名和 path = /backup/ 參與同步的目錄
這裡的path 大家要記好了,這裡不要隨便的一設定就直接完事,要知道這裡是認證模組的,以後從客戶機備份的資料會儲存在這裡。
2、auth users = redhat 認證的使用者名稱
這個名字是伺服器端實實在在存在使用者,大家不要直接跟步驟走卻忽略了這點。如果伺服器端少了這個的話我估計你的資料同步就實現不了,大家要謹記。
3、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
測試:下面delete表示刪除目標存在而源目錄不存在的檔案的命令
rsync -vzrtop --delete /home/ce test@192.168.0.206::backup --password-file=/etc/rsyncd.password
從伺服器上下載檔案a:打包,v:詳細資訊,z壓縮
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引數。
例子: rsync -av test@192.168.1.122:/home/test/3.txt .
表示將服務192.168.1.122的/home/test/3.txt檔案複製到本客戶度的當前目錄其中“.”表示當前目錄
-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中制定模式匹配的檔案
----------------------------------------------------------------------
說明:從理論上將這個是行的通的,因為任何伺服器都可以遠端連線的,那麼只要知道了ip,使用者名稱,密碼,就可以進入到伺服器,就可以檢視伺服器中的檔案
這個當然就可以複製下來,然後另一臺伺服器又能登入,所以最原始的就可以將源伺服器的檔案複製到本地,然後上傳到另一臺伺服器,rsync,相當於省掉中間一步
就是直接將源伺服器的檔案傳到另一臺伺服器,當然需要配置下,有兩種方式
第一種:伺服器方式,需要配置一臺伺服器作為伺服器(假裝看做伺服器,其實兩個都是伺服器),然後配置一個bakup檔案,配置一個使用者名稱和密碼,專門用來被遠端連線
如果說的專業點,backup就是所謂的認證模組,使用者名稱和密碼檔案就是所謂的認證檔案,然後客戶端,也需要配置一個金鑰就是源伺服器對應的使用者的密碼,然後在傳輸的過程
中就設定下使用者,ip引數,就相當於源伺服器的使用者名稱,密碼,ip都有了,所以就可以傳輸了