第1章 rsync服務(wù)及搭建備份服務(wù)器
1.1 什么是Rsync
??Rsync是一款開源的匆赃、快速的球散、多功能的、可實(shí)現(xiàn)全量及增量的本地或遠(yuǎn)程數(shù)據(jù)復(fù)制(拷貝)的優(yōu)秀工具督惰。
1.2 全量和增量
全量
全部備份
增量
差異化備份,對更新的那一部分進(jìn)行備份
1.3 Rsync的作用
??工作中的定時/實(shí)時數(shù)據(jù)備份旅掂、本地服務(wù)器目錄赏胚、不同機(jī)器、不同機(jī)房之間的數(shù)據(jù)備份都可以使用Rsync完成商虐。
1.4 Rsync的功能特性
支持拷貝普通文件與特殊文件觉阅,如鏈接文件,設(shè)備文件等秘车。
支持排除指定文件或目錄同步的功能典勇,相當(dāng)于打包命令tar的排除功能。
可以做到保持原文件或目錄的權(quán)限鲫尊、時間痴柔、軟硬鏈接、屬主疫向、組等所有屬性均不改變咳蔚。
可實(shí)現(xiàn)增量復(fù)制,既只復(fù)制發(fā)生變化的數(shù)據(jù)搔驼,因此數(shù)據(jù)傳輸效率很高谈火。
可以使用rcp,rsh,ssh等方式來配合進(jìn)行隧道加密傳輸文件(rsync本身不對數(shù)據(jù)加密)。
可以通過socket(進(jìn)程方式)傳輸文件和數(shù)據(jù)(服務(wù)端和客戶端)舌涨。
支持匿名或認(rèn)證(無需系統(tǒng)用戶)進(jìn)程模式傳輸糯耍,安全的進(jìn)行數(shù)據(jù)備份及鏡像
1.5 增量復(fù)制原理
使用quick check算法,只對增量的部分復(fù)制囊嘉,根據(jù)大小屬性的變化進(jìn)行復(fù)制温技。
版本
復(fù)制原理
Rsync 2.x
比對完所有內(nèi)容后,對差異的內(nèi)容進(jìn)行復(fù)制
Rsync 3.x
一邊比對文本內(nèi)容扭粱,一邊對差異進(jìn)行復(fù)制舵鳞。
1.6 Rsync三種工作模式介紹
1.6.1 本地(local)
在本地使用,rsync就是一個命令琢蛤。
語法格式:
rsync
[OPTION...]
SRC...
[DEST]
rsync命令
參數(shù)選項
[源目錄或文件]
目的目錄或文件
命令作用:
把數(shù)據(jù)從一個地方復(fù)制到另一個地方(僅在一臺機(jī)器增量)蜓堕,相當(dāng)于cp命令抛虏。
通過加參數(shù)實(shí)現(xiàn)刪除功能,相當(dāng)于rm命令套才。
查看屬性信息功能迂猴,相當(dāng)于ls命令。
拷貝實(shí)踐:
1.一般復(fù)制:
[root@backup ~] rsync /etc/hosts /opt <===拷貝文件hosts
[root@backup ~]$ ls /opt <===查看結(jié)果
hosts
2.保持屬性復(fù)制:
[root@backup ~] ls -l /opt/hosts /etc/hosts <===查看屬性
-rw-r--r-- 1 root root 332 4月 12 11:25 /etc/hosts
-rw-r--r-- 1 root root 332 4月 12 11:25 /opt/hosts
刪除實(shí)踐:
1.刪除文件內(nèi)容:
[root@backup ~] cat /opt/hosts <===查看原文件內(nèi)容
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 web03
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
[root@backup ~] cat /opt/hosts <===查看是否清空
2.刪除目錄下所有內(nèi)容:
[root@backup ~] rsync -r --delete /null/ /opt/ <===讓后面opt和前面null目錄內(nèi)容保持一致
[root@backup ~]$ ls /opt/
查看屬性:
[root@backup ~]$ rsync /etc/hosts
-rw-r--r-- 332 2019/04/12 11:25:32 hosts
重點(diǎn):只適合rsync
目錄
區(qū)別
null
目錄和目錄下的內(nèi)容
null/
只是目錄下的內(nèi)容背伴,不含本身
1.6.2 遠(yuǎn)程shell模式
??借助類似ssh隧道傳輸數(shù)據(jù)沸毁,適合不同的機(jī)器之間的異地拷貝,相當(dāng)于scp挂据,但是scp是遠(yuǎn)程全量拷貝以清。
遠(yuǎn)程拷貝的兩種模式:
1、pull(拉):從遠(yuǎn)端拉取到本地
語法格式:
rsync
[OPTION...]
[USER@]HOST:SRC...
[DEST]
rsync命令
參數(shù)選項
[認(rèn)證用戶]@[主機(jī)地址]:[源路徑]
本地路徑
2崎逃、push(推):從本地推到遠(yuǎn)端
語法格式:
rsync
[OPTION...]
SRC...
[USER@]HOST:[DEST]
rsync命令
參數(shù)選項
本地路徑
[認(rèn)證用戶]@[主機(jī)地址]:[目標(biāo)路徑]
示例:
[root@nfs01 ~]$ rsync -avz /etc/hosts root@172.16.1.41:/opt/ <===加密傳輸掷倔。
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.41' (ECDSA) to the list of known hosts.
root@172.16.1.41's password:
sending incremental file list
hosts
sent 219 bytes received 35 bytes 14.51 bytes/sec
total size is 332 speedup is 1.31
檢查:
[root@backup ~] ls
hosts
以下兩條命令是等價的。其中:
參數(shù)
含義
-e ssh
指定使用ssh通道
-p 22
指定使用22端口
rsync -avz /etc/hosts root@172.16.1.41:/opt/
rsync -avz /etc/hosts -e "ssh -p 22" root@172.16.1.41:/opt/
示例:
[root@nfs01 ~]# rsync -avz /etc/hosts -e "ssh -p 22" root@172.16.1.41:/opt/
root@172.16.1.41's password:
sending incremental file list
sent 44 bytes received 12 bytes 22.40 bytes/sec
total size is 332 speedup is 5.93
pull(拉)的命令:
rsync -avz root@172.16.1.41:/opt/hosts /opt
rsync -avz -e "ssh -p 22" root@172.16.1.41:/opt/hosts /opt
1.6.3 rsync守護(hù)進(jìn)程模式
??rsync服務(wù)模式:開啟后臺進(jìn)程个绍,接受別人訪問勒葱。
??守護(hù)進(jìn)程模式首先要搭建rsync服務(wù)端(即守護(hù)進(jìn)程),然后才能在客戶端實(shí)現(xiàn)推拉數(shù)據(jù)巴柿。守護(hù)進(jìn)程模式是企業(yè)運(yùn)維的一個重要的模式凛虽。
1.7 rsync命令參數(shù)
參數(shù)
說明
-v
--verbose 顯示輸出過程
-z
--compress 壓縮
-a
--archive 多參數(shù)集合(-rtopgDl)
-r
--recursive 遞歸
-t
--times 保持修改時間屬性
-o
--owner 保持屬主不變
-p
--perms 保持權(quán)限不變
-g
--group 保持用戶組不變
-l
--links 保持拷貝軟連接
-q
--quiet 安靜的拷貝
-e
指定傳輸通道
--bwlimit=KBPS
限制I/O帶寬,KBytes per second广恢。
--delete
刪除
--exclude
排除
--exclude-from
從文件中排除
企業(yè)常用參數(shù)組合: -avz或者-vzrtopg
1.8 rsync守護(hù)進(jìn)程模式應(yīng)用實(shí)踐
1.8.1 以下操作都是在backup服務(wù)器
1.8.1.1 安裝rsync命令凯旋,若已安裝,可以忽略
[root@backup ~] yum install rsync <===安裝rsync
1.8.1.2 配置配置文件
備份:
cp /etc/rsyncd.conf{,.ori}
修改文件信息:
cat -n /etc/rsyncd.conf
1 #rsync_config_______________start
2 #created by oldboy
3 #site: http://www.oldboyedu.com
4 uid = rsync --->管理備份目錄的用戶
5 gid = rsync --->管理備份目錄的用戶組
6 use chroot = no --->安全功能钉迷,數(shù)據(jù)是否鎖定到備份目錄
7 fake super = yes --->不用root用戶也可以存儲文件的完整屬性
8 max connections = 200 --->最大并發(fā)連接數(shù)(同時多少客戶端訪問)
9 timeout = 600 --->超時時間
10 pid file = /var/run/rsyncd.pid --->進(jìn)程號所在文件
11 lock file = /var/run/rsync.lock --->鎖文件
12 log file = /var/log/rsyncd.log --->日志文件至非,查看報錯等信息*****
13 ignore errors --->忽略錯誤
14 read only = false --->可寫
15 list = false --->不允許列表
16 hosts allow = 172.16.1.0/24 --->授權(quán)哪些主機(jī)可以訪問
17 hosts deny = 0.0.0.0/32 --->哪些主機(jī)不允許訪問
18 auth users = rsync_backup --->遠(yuǎn)程虛擬連接用戶
19 secrets file = /etc/rsync.password --->存放密碼的文件(格式為(用戶名:密碼) 權(quán)限:必須為600)
20 [backup] --->[模塊名]遠(yuǎn)程訪問一般使用模塊名訪問
21 comment = welcome to oldboyedu backup! --->說明,注釋
22 path = /backup/ --->服務(wù)端用戶備份的目錄(用戶和組糠聪,rsync.rsync)
創(chuàng)建用戶和備份目錄:
[root@backup ~] id rsync
uid=1001(rsync) gid=1001(rsync) 組=1001(rsync)
[root@backup ~] chown -R rsync.rsync /backup/ <===修改用戶和用戶組
[root@backup ~]$ ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月 15 12:12 /backup/
1.8.1.3 啟動和檢查rsyncd服務(wù)
啟動:
c6及以前:
rsync --daemon
c7:
systemctl start rsyncd <===開啟服務(wù)
systemctl enable rsyncd <===開啟開機(jī)自啟動
systemctl status rsyncd <===檢查服務(wù)狀態(tài)
檢查進(jìn)程和端口:
[root@backup ~] netstat -lntup|grep 873 <===檢查端口
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7521/rsync
tcp6 0 0 :::873 :::* LISTEN 7521/rsync
[root@backup ~]$ lsof -i :873 <===檢查端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 7521 root 3u IPv4 41439 0t0 TCP *:rsync (LISTEN)
rsync 7521 root 5u IPv6 41440 0t0 TCP *:rsync (LISTEN)
1.8.1.4 配置密碼文件
[root@backup ~] chmod 600 /etc/rsync.password
[root@backup ~] ll /etc/rsync.password
-rw------- 1 root root 20 4月 15 11:52 /etc/rsync.password
到這里rsync服務(wù)端已配置完成
1.8.2 以下操作在客戶端服務(wù)器
在客戶端認(rèn)證密碼荒椭,有兩種方法:(可以二選一)
方法1:認(rèn)證密碼文件
[root@nfs01 ~] chmod 600 /etc/rsync.password
[root@nfs01 ~] ll /etc/rsync.password
-rw------- 1 root root 7 4月 15 11:55 /etc/rsync.password
方法2:配置特殊變量 echo ' export RSYNC_PASSWORD=oldboy' >>/etc/bashrc
[root@nfs01 ~] echo $RSYNC_PASSWORD
oldboy
到這里rsync客戶端 nfs01 配置完成
1.8.3 守護(hù)進(jìn)程模式,客戶端rsync的命令語法
配置服務(wù)器端守護(hù)進(jìn)程舰蟆,實(shí)現(xiàn)數(shù)據(jù)傳輸:
服務(wù)器端守護(hù)進(jìn)程趣惠。
客戶端執(zhí)行命令。
1.8.3.1 Pull(拉):從遠(yuǎn)端拉取到本地身害。
語法1(常用):
rsync
[OPTION...]
[USER@]HOST::SRC...
[DEST]
rsync命令
參數(shù)選項
[虛擬用戶]@[主機(jī)地址]::[模塊名]
本地路徑
語法2:
rsync
[OPTION...]
rsync://[USER@]HOST::SRC...
[DEST]
rsync命令
參數(shù)選項
rsync://[虛擬用戶]@[主機(jī)地址]/[模塊名]
本地路徑
1.8.3.2 Push(推):從本地推到遠(yuǎn)端味悄。
語法1(常用):
rsync
[OPTION...]
[DEST]
[USER@]HOST::SRC...
rsync命令
參數(shù)選項
本地路徑
[虛擬用戶]@[主機(jī)地址]::[模塊名]
語法2:
rsync
[OPTION...]
[DEST]
rsync://[USER@]HOST::SRC...
rsync命令
參數(shù)選項
本地路徑
rsync://[虛擬用戶]@[主機(jī)地址]/[模塊名]
1.8.4 測試成果與報錯解決方法
報錯1:
[root@nfs01 ~]$ rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
@ERROR: invalid uid rsync
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
原因分析:無效的UID:rsync,需要添加用戶rsync塌鸯,并且發(fā)現(xiàn)沒有/backup目錄傍菇,需要創(chuàng)建目錄,并將用戶和用戶組都改為rsync界赔。
解答:
[root@backup ~] id rsync
uid=1001(rsync) gid=1001(rsync) 組=1001(rsync)
[root@backup ~] chown -R rsync.rsync /backup/
[root@backup ~]$ ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月 15 12:12 /backup/
報錯2:
[root@nfs01 ~]$ rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
rsync: chgrp ".hosts.YDuTjO" (in backup) failed: Operation not permitted (1)
sent 223 bytes received 124 bytes 694.00 bytes/sec
total size is 332 speedup is 0.96
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
原因分析:/etc/rsyncd.conf文件內(nèi)缺少參數(shù)丢习,導(dǎo)致文件的存儲屬性不完整。
解答:增加如下參數(shù)到/etc/rsyncd.conf
fake super = yes <===增加的參數(shù):不用root用戶也可以存儲文件的完整屬性淮悼。
This allows the full attributes of a file to be stored without having to have the daemon actually running as root.
[root@backup ~] systemctl restart rsyncd
參數(shù)添加完后再測試:結(jié)果成功,沒有報錯
[root@nfs01 ~]$ rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
hosts
sent 89 bytes received 49 bytes 276.00 bytes/sec
total size is 332 speedup is 2.41
服務(wù)端檢查結(jié)果:
[root@backup ~]$ ls /backup/
hosts
如果客戶端按照環(huán)境變量的方式配置袜腥,則可以忽略--password-file=/etc/rsync.password參數(shù)见擦。
[root@nfs01 ~]$ rsync -avz /etc rsync_backup@172.16.1.41::backup
sending incremental file list
sent 52,071 bytes received 644 bytes 105,430.00 bytes/sec
total size is 31,244,350 speedup is 592.70
測試增量
[root@nfs01 ~] rsync -avz /etc rsync_backup@172.16.1.41::backup
sending incremental file list
etc/oldboy.txt
sent 52,098 bytes received 655 bytes 105,506.00 bytes/sec
total size is 31,244,350 speedup is 592.28
第二種語法:
[root@nfs01 ~]$ rsync -avz /etc rsync://rsync_backup@172.16.1.41/backup
sending incremental file list
sent 52,070 bytes received 644 bytes 105,428.00 bytes/sec
total size is 31,244,350 speedup is 592.71
。羹令。鲤屡。。福侈。酒来。。肪凛。堰汉。。伟墙。翘鸭。。戳葵。就乓。。拱烁。生蚁。。邻梆。守伸。。浦妄。尼摹。。剂娄。蠢涝。。阅懦。和二。。耳胎。惯吕。
惕它。。废登。淹魄。。堡距。甲锡。。羽戒。缤沦。。易稠。缸废。。缩多。呆奕。。衬吆。梁钾。。逊抡。copy的姆泻。。冒嫡。拇勃。。孝凌。方咆。。蟀架。
瓣赂。。片拍。煌集。。捌省。苫纤。。。卷拘。喊废。。恭金。操禀。。横腿。。斤寂。耿焊。。遍搞。罗侯。。溪猿。钩杰。。诊县。讲弄。。依痊。避除。。胸嘁。