【教程主題】:rsynclinux
【課程錄製】: 創E算法
【主要內容】sql
【1】 rsync介紹vim
Rsync(Remote Synchronize) 是一個遠程資料同步工具,可經過LAN/WAN快速同步多臺主機,Rsync使用所爲的「Rsync演算法」來使本地主機和遠程主機之間達到同步,這個演算法並非每次都整份傳送,它只傳送兩臺計算機之間所備份的資料不一樣的部分,所以速度至關快。安全
Rsync的優勢以下:服務器
1、能夠鏡像保存整個目錄樹和文件系統。socket
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
密碼文件存放地址
注意:
一、[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
測試:下面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都有了,因此就能夠傳輸了