1. 程式人生 > >linux集群搭建之rsync服務的搭建

linux集群搭建之rsync服務的搭建

rsync服務的搭建

rsync 服務總結
目錄
rsync 服務總結 1
第1章 rsync簡介 3
1.1 什麽是rsync 3
1.2 rsync的特性 3
1.3 rsync常用選項 3
1.4 rsync的三種工作模式 4
1.4.1 本地模式 4
1.4.2 ssh通道模式(shell模式) 4
1.4.3 daemon模式 5
第2章 rsync daemon模式的配置 6
2.1 服務端的配置 6
2.1.1 查看安裝環境 6
2.1.2 查看是否有rsync安裝包 6
2.1.3 添加rsync用戶,用來管理本地目錄 6
2.1.4 生成配置文件/etc/rsyncd.conf(該文件默認是不存在的) 6
2.1.5 啟動並檢查是否啟動成功 8
2.1.6 建立共享目錄並賦予權限 8
2.1.7 創建密碼文件並編輯 8
2.1.8 更改密碼文件的權限並檢查 8
2.1.9 查看rsync服務的端口 8
2.1.10 將rsync服務加入開機自啟動 9
2.2 客戶端配置步驟 9
2.2.1 建立密碼文件,只需在文件中寫入密碼即可 9
2.2.2 給密碼文件設置權限 9
2.2.3 建立打包目錄 9
2.3 測試 9
2.3.1 在客戶端建立測試文件 9
2.3.2 測試命令 9
2.4 rsync多模塊的配置 10
2.4.1 編輯配置文件/etc/rsyncd.conf 10
2.4.2 創建目錄並賦予權限 11
2.4.3 重啟rsync服務 11
2.4.4 在客戶端進行測試 11
2.5 rsync多用戶的配置 11
2.5.1 編輯配置文件/etc/rsyncd.conf 11
2.5.2 創建密碼文件/etc/rsync.password.oldboy 12
2.5.3 在客戶端進行測試 12
第3章 服務模式排除及無差異同步 12
3.1 服務模式排除 12
3.2 無差異同步 13
第4章 企業案列 13
4.1 案例1 13
4.2 案例2 13
第5章節 錯誤重現 13
5.1 服務端錯誤 13
5.1.1 rsync服務端缺少共享目錄 13
5.1.2 rsync服務端共享目錄權限不夠 14
5.1.3 服務端缺少用戶 15
5.1.4 客戶端在推送時模塊多一個斜線 16
5.2 客戶端錯誤 16
5.2.1 客戶端密碼文件不對 16

第1章 rsync簡介
1.1 什麽是rsync
? rysnc是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。rsync軟件適用於unix/linux等多種操作平臺
? 一個rsync命令相當於scp(遠程備份,但是rsync可以實現增量備份)、cp、rm三個命令
? centos5系列和centos6系列的差別在於5系列是先進性對比,然後在進行同步,6系列是一邊對比差異一邊進行同步
1.2 rsync的特性
? 支持拷貝特殊文件,如連接文件等
? 可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能
? 可以做到保持源文件或目錄的權限、時間、軟連接、屬主、屬組等所有屬性均不改變 (-p選項)
? 可以實現增量同步,即只同步發生變化的數據,因此數據傳輸效率很高
? 可以使用rcp、rsh、ssh等方式來配合傳輸文件(rsync本身不對數據加密)
? 可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)
? 支持匿名的或認證(無需系統用戶)的進程模式傳輸,可方便安全的進行數據備份及鏡像備份
1.3 rsync常用選項
-v(--verbose):詳細模式輸出,即顯示傳輸時的進度信息
-z(--compress):傳輸時對數據進行壓縮處理,--compress-level=數字,可以按照壓縮級別壓縮
-a(--archive):歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rtopgDl
-r(--recursive):對子目錄以遞歸模式進行處理,即目錄下的所有目錄都同樣處理
-t(--time):保持文件時間信息(時間屬性)
-o(--owner):保持文件屬主信息
-p(--perms):保持文件權限
-g(--group):保持文件屬組信息
-D(--devices):保持設備文件信息
-l(--links):保持軟連接文件信息
1.4 rsync的三種工作模式
1.4.1 本地模式
? 【格式】
rsync 選項 源 目的
? 【實例】
[root@backup tmp]# rsync -avz /etc/hosts /tmp/
sending incremental file list
hosts

sent 183 bytes received 31 bytes 428.00 bytes/sec
total size is 296 speedup is 1.38
[root@backup tmp]# ls
hosts
1.4.2 ssh通道模式(shell模式)
? 【格式】
rsync 選項 源 用戶@遠端主機:遠端目錄 (推動作)
rsync 選項 用戶@遠端主機:遠端目錄 源 (拉動作)
? 【實例】
###################################推動作######################################
[root@backup tmp]# rsync -avz /etc/hosts -e ‘ssh -p 22‘ [email protected]:/tmp/
The authenticity of host ‘172.16.1.31 (172.16.1.31)‘ can‘t be established.
RSA key fingerprint is c2:34:59:81:a2:a7:9c:0a:23:9b:cf:1d:bb:d4:8e:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.16.1.31‘ (RSA) to the list of known hosts.
[email protected]‘s password:
sending incremental file list
hosts
sent 183 bytes received 31 bytes 47.56 bytes/sec
total size is 296 speedup is 1.38
####################################拉動作#####################################
[root@backup tmp]# rsync -avz -e ‘ssh -p 22‘ [email protected]:/tmp/ /tmp/
[email protected]‘s password:
receiving incremental file list
./
hosts
.ICE-unix/

sent 37 bytes received 238 bytes 110.00 bytes/sec
total size is 296 speedup is 1.08
[root@backup tmp]# ls
hosts
1.4.3 daemon模式
? 【格式】
rsync 選項 源 用戶@主機::模塊 --password-file=客戶端密碼配置文件(推動作)
rsync 選項 用戶@主機::模塊 目的目錄 --password-file=客戶端密碼配置文件(拉動作)
? 【實例】
######################################拉動做###################################
[root@oldboy ~]# rsync -avz [email protected]::backup/ /tmp/ --password-
file=/etc/rsync.password
receiving incremental file list
./
stu01
......
sent 257 bytes received 551 bytes 1616.00 bytes/sec
total size is 0 speedup is 0.00
[root@oldboy ~]# cd /tmp/
[root@oldboy tmp]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
######################################推動做###################################
[root@oldboy tmp]# rsync -avz /tmp/ [email protected]::backup/ --password-file=/etc/rsync.password
sending incremental file list
./
stu01
......
.ICE-unix/

sent 517 bytes received 205 bytes 1444.00 bytes/sec
total size is 0 speedup is 0.00
第2章 rsync daemon模式的配置
2.1 服務端的配置
2.1.1 查看安裝環境
[root@backup ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@backup ~]# uname -r
2.6.32-696.el6.x86_64
2.1.2 查看是否有rsync安裝包
[root@backup ~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
註意:若沒有該安裝包,可以通過yum進行安裝,安裝命令如下:
[root@backup ~]# yum install -y rsync
2.1.3 添加rsync用戶,用來管理本地目錄
[root@backup ~]# useradd rsync -s /sbin/nologin -M
[root@backup ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
註意:該用戶是虛擬用戶,不需要進行登錄
2.1.4 生成配置文件/etc/rsyncd.conf(該文件默認是不存在的)
[root@backup ~]# vim /etc/rsyncd.conf
################################寫入的內容如下#################################
#rsync_config____start
#created by oldboy
##rsyncd.conf start##
uid = rsync
gid = rsync
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
#log file = /rsync/rsyncd.log
[backup]
path = /backup/
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#rsync_config_end
[root@backup ~]# cat /etc/rsyncd.conf #查看
? 【配置文件etc/rsyncd.conf詳解】
#rsync_config
start
#created by oldboy
##rsyncd.conf start##
uid = rsync #進程對應的用戶 遠端的命令使用rsync訪問共享目錄
gid = rsync #用戶組
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 #日誌文件 記錄訪問和出錯信息
[backup] #模塊名稱
path = /backup/ #服務器提供訪問的目錄
ignore errors #忽略錯誤
read only = false #忽略可讀 表示可寫
list = false #不能使用ls的功能 即不能列表
hosts allow = 172.16.1.0/24 #允許哪些機器可以連
hosts deny = 0.0.0.0/32 #禁止哪些用戶可以連
auth users = rsync_backup #虛擬用戶 獨立於系統之外的虛擬用戶
secrets file = /etc/rsync.password #虛擬用戶對應的用戶和密碼
#rsync_config_____end
2.1.5 啟動並檢查是否啟動成功
[root@backup ~]# rsync –daemon
[root@backup ~]# ps -ef |grep rsync|grep -v grep
2.1.6 建立共享目錄並賦予權限
[root@backup ~]# mkdir /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
註意:如果目錄不存在,會報錯,詳細錯誤見下面的錯誤總結
2.1.7 創建密碼文件並編輯
[root@backup ~]# vim /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
註意:密碼文件的格式為: 用戶:密碼
2.1.8 更改密碼文件的權限並檢查
[root@backup ~]# chmod 600 /etc/rsync.password
[root@backup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 Jan 16 20:21 /etc/rsync.password
註意:密碼文件的權限是600
2.1.9 查看rsync服務的端口
[root@backup ~]# lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 1201 root 4u IPv4 10536 0t0 TCP :rsync (LISTEN)
rsync 1201 root 5u IPv6 10537 0t0 TCP
:rsync (LISTEN)
[root@backup ~]# netstat -tunlp|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 1201/rsync
tcp 0 0 :::873 :::
LISTEN 1201/rsync
2.1.10 將rsync服務加入開機自啟動
[root@backup ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local
/usr/bin/rsync --daemon
2.2 客戶端配置步驟
2.2.1 建立密碼文件,只需在文件中寫入密碼即可
[root@nfs01 ~]# vim /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
123456
2.2.2 給密碼文件設置權限
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 Mar 8 10:56 /etc/rsync.password
註意:密碼文件的權限是600
2.2.3 建立打包目錄
[root@nfs01 ~]# mkdir /backup/
2.3 測試
2.3.1 在客戶端建立測試文件
[root@nfs01 ~]# cd /backup/
[root@nfs01 backup]# touch {01..10}
[root@nfs01 backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
2.3.2 測試命令
【方法1】
[root@nfs01 backup]# rsync -avz /backup/ [email protected]::backup/ --password-
file=/etc/rsync.password
【方法2】
[root@nfs01 backup]# rsync -avz /backup/ rsync://[email protected]/backup/ --
password-file=/etc/rsync.password
2.4 rsync多模塊的配置
2.4.1 編輯配置文件/etc/rsyncd.conf
[root@backup oldboy]# vim /etc/rsyncd.conf
[root@backup oldboy]# cat /etc/rsyncd.conf
#rsync_config____start
#created by oldboy
##rsyncd.conf start##
uid = rsync
gid = rsync
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
#log file = /rsync/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password

[backup]
path = /backup/
[oldboy]
path = /oldboy/
#rsync_config_____end
2.4.2 創建目錄並賦予權限
[root@backup ~]# mkdir /oldboy/
[root@backup ~]# chown -R rsync.rsync /oldboy/
[root@backup ~]# ls -ld /oldboy/
2.4.3 重啟rsync服務
[root@backup ~]# pkill rsync
[root@backup ~]# ps -ef |grep rsync |grep -v grep
[root@backup ~]# rsync --daemon
2.4.4 在客戶端進行測試
[root@nfs01 ~]# rsync -avz /backup/ [email protected]::oldboy/ --password-
file=/etc/rsync.password
2.5 rsync多用戶的配置
2.5.1 編輯配置文件/etc/rsyncd.conf
[root@backup ~]# vim /etc/rsyncd.conf
[root@backup ~]# cat /etc/rsyncd.conf
#rsync_config____start
#created by oldboy
##rsyncd.conf start##
uid = rsync
gid = rsync
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
#log file = /rsync/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password

[backup]
path = /backup/
[oldboy]
path = /oldboy/
auth users = test
secrets file = /etc/rsync.password.oldboy
#rsync_config_____end
2.5.2 創建密碼文件/etc/rsync.password.oldboy
[root@backup ~]# vim /etc/rsync.password.oldboy
[root@backup ~]# cat /etc/rsync.password.oldboy
test:123456
2.5.3 在客戶端進行測試
[root@oldboy ~]# rsync -avz /backup/ [email protected]::oldboy/ --password-
file=/etc/rsync.password
註意:文檔中多模塊及多用戶的配置都是在daemon服務搭好的基礎上進行的
第3章 服務模式排除及無差異同步
3.1 服務模式排除
? 【命令】
[root@nfs01 backup]# rsync -avz --exclude=a /backup/ [email protected]::backup/ --
password-file=/etc/rsync.password #排除一項
[root@nfs01 backup]# rsync -avz --exclude={a..g} /backup/ [email protected]::backup/ --password-file=/etc/rsync.password #排除連續多項
[root@nfs01 backup]# rsync -avz --exclude={a,c} /backup/ [email protected]::backup/ --password-file=/etc/rsync.password #排除不連續的多項

3.2 無差異同步
? 【命令】
[root@nfs01 backup]# rsync -avz --delete /backup/ [email protected]::backup/ --
password-file=/etc/rsync.password
註意:該項盡可能的不用否則會引起血的慘案

第4章 企業案列
4.1 案例1
某運維人員在做數據備份,導致帶寬被占滿,致使用戶無法訪問網站
4.2 案例2
某視頻網站的運維人員在往線上服務器上發布視頻時,使用了無差異同步(如下命令),導致服務器上之前的視頻全部被清空,只留下當天推送的視頻
[root@nfs01 backup]#rsync -avz --delete /backup/ [email protected]::backup/ --
password-file=/etc/rsync.password

第5章節 錯誤重現
5.1 服務端錯誤
5.1.1 rsync服務端缺少共享目錄
? 【錯誤實例】
技術分享圖片
? 【解決方法】
只需在服務端創建共享目錄,然後賦予其權限即可
[root@backup ~]# mkdir /backup
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar 8 10:00 /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Mar 8 10:00 /backup/
? 【測試】
在客戶端進行推送
技術分享圖片
在服務端進行查看校驗:
技術分享圖片
5.1.2 rsync服務端共享目錄權限不夠
? 【錯誤實例】
技術分享圖片
? 【解決方法】
只需修改服務端共享目錄的權限即可:
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar 8 10:26 /backup/
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Mar 8 10:26 /backup/
? 【測試】
在客戶端進行推送
[root@oldboy mail]# rsync -avz /backup/ [email protected]::backup/ --password-
file=/etc/rsync.password
sending incremental file list

sent 101 bytes received 8 bytes 218.00 bytes/sec
total size is 0 speedup is 0.00
技術分享圖片
在服務端進行查看校驗
[root@backup ~]# cd /backup/
[root@backup backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
技術分享圖片
5.1.3 服務端缺少用戶
? 【錯誤實例】
技術分享圖片
? 【解決方法】
[root@backup ~]# useradd rsync -s /sbin/nologin -M
[root@backup ~]# id rsync
uid=501(rsync) gid=501(rsync) groups=501(rsync)
? 【測試】
在客戶端進行推送
[root@oldboy mail]# rsync -avz /backup/ [email protected]::backup/ --password-
file=/etc/rsync.password
sending incremental file list

sent 101 bytes received 8 bytes 218.00 bytes/sec
total size is 0 speedup is 0.00
技術分享圖片
在服務端查看校驗
[root@backup ~]# cd /backup/
[root@backup backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
技術分享圖片
5.1.4 客戶端在推送時模塊多一個斜線
? 【錯誤實例】
技術分享圖片
? 【解決方法】
把多的斜線去掉即可
5.2 客戶端錯誤
5.2.1 客戶端密碼文件不對
? 【錯誤實例】
技術分享圖片
? 【解決方法】
修改密碼文件
? 【測試】
在客戶端進行推送:
[root@oldboy backup]# rsync -avz /backup/ [email protected]::backup/ --password-
file=/etc/rsync.password
技術分享圖片
在服務端進行查看校驗:
[root@backup ~]# cd /backup/
[root@backup backup]# ls
stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10
技術分享圖片

linux集群搭建之rsync服務的搭建