rsync 服務 總結

Rsync: 是一款開源的,快速的,多功能的,可實現全量及增量備份的本地或遠程的數據同步備份的工具。

一. rsync 的特點:

  1. 支持拷貝特殊文件:如 連接文件,設備等。
  2. 可以有排除指定文件或目錄的功能,相當於打包命令tar 的排除功能
  3. 可以做到保持原文件或目錄的權限,時間,軟硬連接,屬主,屬組等所有屬性均不改變。
  4. 可實現增量同步,,即只同步變化的根據因此數據傳輸使用效率很高
  5. 可以rcp ,rsh,ssh等方式來配合傳輸文件(rsync本身不對數據加密)
  6. 支持匿名或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像。

二. rsync 的工作方式:

  1. 作爲客戶端命令
    拷貝文件或目錄,相當於cp
    參數:
    -v 顯示詳細信息
    -z傳輸時進行壓縮
    -r 遞歸模式
    -t 保持文件的時間信息
    -o:保持文件的屬性信息
    -g:屬組信息
    -p:保持文件的權限

例子:
rsync 服務  總結

  1. rsync結合ssh進行數據同步
    例子:
    rsync 服務  總結

  2. rsync服務的部署:
    rsync daemon (守護進程方式)

1)環境檢查:
[root@backup ~]# cat /etc/centos-release ###查看系統版本
CentOS release 6.6 (Final)
[root@backup ~]# uname -m #查看版本信息
x86_64
[root@backup ~]# uname -r ###查看內核版本
2.6.32-504.el6.x86_64
[root@backup ~]# rsync --version ####查看rsync版本信息
rsync version 3.0.6 protocol version 30
[root@backup ~]# rpm -qa rsync ###查看rsync 安裝包
rsync-3.0.6-12.el6.x86_64

服務器端配置:
第一步:生成rsyncd.conf配置文件:
配置文件參數說明:
#rsync_config__start
#created by danny 17:01 20181011
#QQ 1596023034 youxiang:[email protected]
##rsyncd.conf start##
uid = rsync #用戶 遠端的命令使用rsync訪問共享目錄
gid = rsync #用戶組gid
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 #不能列表
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 ~]# useradd rsync -s /sbin/nologin -M ###添加用戶
[root@backup ~]# tail -1 /etc/passwd ####查看
rsync:x:502:502::/home/rsync:/sbin/nologin

[root@backup ~]# mkdir /backup ####創建共享目錄

[root@backup ~]# chown -R rsync.rsync /backup/ ####授權目錄
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Aug 21 12:53 /backup/
[root@backup ~]# rsync --daemon ###開啓rsync服務並檢查
[root@backup ~]# ps -ef |grep rsync |grep -v grep
root 1626 1523 0 12:20 pts/0 00:00:00 vim /etc/rsyncd.conf
root 1641 1523 0 12:24 pts/0 00:00:00 vim /etc/rsyncd.conf
root 1747 1 0 12:52 ? 00:00:00 rsync --daemon
[root@backup ~]# vi /etc/rsync.password ####虛擬用戶創建密碼
rsync_backup:123456
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
[root@backup ~]# chmod 600 /etc/rsync.password ####給密碼設置權限
[root@backup ~]# ls -l /etc/rsync.password ####查看rsync.password
-rw------- 1 root root 20 Aug 21 12:59 /etc/rsync.password

[root@backup ~]# lsof -i :873 #####查看端口號對應的服務
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 1747 root 4u IPv4 13507 0t0 TCP :rsync (LISTEN)
rsync 1747 root 5u IPv6 13508 0t0 TCP
:rsync (LISTEN)
[root@backup ~]# netstat -lntup|grep 873 ####查看端口號對應的服務
tcp 0 0 0.0.0.0:873 0.0.0.0: LISTEN 1747/rsync
tcp 0 0 :::873 :::
LISTEN 1747/rsync

第三步:加入開機自啓動:
[root@backup ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local
/usr/bin/rsync --daemon

第四步:客戶端配置
[root@nfs01 ~]# rpm -qa rsync ###查看rsync是否安裝rpm包
rsync-3.0.6-12.el6.x86_64
[root@nfs01 ~]# vim /etc/rsync.password ###密碼和服務器端的密碼文件一樣
123456

客戶端--->服務器端 ---推送數據:
[root@web ~]# rsync -avz /backup/ rsync://rsync_danny@IP/backup/ --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password: ##### 密碼:123456
sending incremental file list
./
a
b
c
d
e
f
g
test1

sent 131014 bytes received 163 bytes 3320.94 bytes/sec
total size is 134217728 speedup is 1023.18

客戶端---->服務器端---->拉數據:
[root@web backup]# rsync -avz rsync://[email protected]/backup/ /backup/ --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password: ###密碼:123456
receiving incremental file list
./
a
b
c
d
e
f
g

sent 200 bytes received 412 bytes 26.04 bytes/sec
total size is 0 speedup is 0.00

rsync 多模塊配置:

  1. 服務器端的配置:

下面是rsync 的配置文件:/etc/rsyncd.conf 內容:其中[danny]是我自己新加的模塊:其中代表的含義上面已經註釋過了。
rsync 服務  總結

在實際的配置過程中出現了客戶端往服務器端推送數據失敗:
報錯信息:
[root@web backup]# rsync -avz /backup/ rsync://[email protected]/danny/ --password-file=/etc/rsync.password
password file must not be other-accessible
continuing without password file
Password:
@ERROR: auth failed on module danny
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
查找了半天都沒有找到原因,後來又看了下配置文件下的各個參數的含義,找到了是密碼的問題,這裏增加了[danny]模塊,密碼配置文件裏應該有虛擬用戶 auth users = rsync_danny對應的密碼,密碼配置文件下的參數如下:
rsync 服務  總結
否則客戶端推送文件時找不到用戶對應的密碼,因此會導致推送失敗
客戶端配置如下:
rsync 服務  總結

小結:
在多個模塊的情況下,應該注意;
服務器端:

path = /danny ####路徑
auth users = ####用戶
secrets file = /etc/rsync.password #####密碼文件
Vi /etc/rsync.pasword 密碼文件裏:
用戶:密碼

客戶端直接放置服務的配置的密碼字符串就可以了,目前來看沒有這方面的故障

我在這幾個地方都出現了問題導致文件推送失敗
重要的是要熟練掌握服務的部署
配置文件各個參數的含義
以防出錯後不知道從何下手排查錯誤。

每天鞏固舊知識,學習新知識。
活學靈用!

今日小結完畢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章