目錄
- Rsync
- 1. Rsync基本概述
- 2.Rsync應用場景
- 3.Rsync傳輸模式
- Rsync命令對應選項
- 本地方式
- 檔案同步
- 目錄同步1:
- 目錄同步2:
- 完全同步:加--delete,源和目標內容完全一致
- 遠程方式
- 守護行程
- 服務器的配置流程:
- 客戶端驗證程序:
- 4.Rsync服務實踐
Rsync
1. Rsync基本概述
rsync是linux系統下的資料鏡像備份工具,使用快速增量備份工具Remote Sync可以遠程同步,支持本地復制,或者與其他SSH、rsync主機同步,
常見備份方式
完全備份:對所有資料做一次全備份\
增量備份:只備份上一次備份之后變化的資料*****\
差異備份:備份是上一次完全備份后變化的資料\
- 常見備份組合:
完全+增量:1次完全+多次增量
完全+差異:1次完全+1次差異
2.Rsync應用場景

- [ ] 資料同步的方式
- 推:push,上傳(upload)
將客戶端的資料上傳到rsync服務段(backup服務器)
- 拉:pull,下載(download)
將rsync服務端(backup服務器)的資料下載到客戶端
推拉是由客戶端發起的
3.Rsync傳輸模式
Rsync大致使用三種主要的資料傳輸方式
Rsync命令對應選項
-a #歸檔模式傳輸, 等于-tropgDl
-v #詳細模式輸出, 列印速率, 檔案數量等
-z #傳輸時進行壓縮以提高效率
-r #遞回傳輸目錄及子目錄,即目錄下得所有目錄都同樣傳輸,
-t #保持檔案時間資訊
-o #保持檔案屬主資訊
-p #保持檔案權限
-g #保持檔案屬組資訊
-l #保留軟連接
-P #顯示同步的程序及傳輸時的進度等資訊
-D #保持設備檔案資訊
-L #保留軟連接指向的目標檔案
-e #使用的信道協議,指定替代rsh的shell程式
--exclude=PATTERN #指定排除不需要傳輸的檔案模式
--exclude-from=file #檔案名所在的目錄檔案
--bwlimit=100 #限速傳輸
--partial #斷點續傳
--delete #讓目標目錄和源目錄資料保持一致
本地方式
rsync [OPTION...] SRC... [DEST]
類似cp命令
檔案同步
[root@backup ~]# rsync -avz /etc/fstab /data/
sending incremental file list
fstab
目錄同步1:
[root@backup ~]# rsync -avz /data/ /opt/
sending incremental file list
./
fstab
passwd
目錄同步2:
[root@backup ~]# rsync -avz /data /opt/
sending incremental file list
data/
data/fstab
data/passwd
總結:
如果要同步的是目錄里面的內容,命令中目錄的后面必須要加"/";
如果要同步的是目錄本身及其內容,則命令中只需寫目錄名,
完全同步:加--delete,源和目標內容完全一致
[root@backup ~]# rsync -avz /null/ /opt/ --delete #慎用
遠程方式
Access via remote shell: 遠程通道傳輸
Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
使用的ssh協議,程序是加密,類似scp命令(secure cp)
tcp傳輸程序,沒傳輸一個資料都會有連接的建立、維護、斷開程序,
[root@backup ~]# rsync -avz /etc/hosts [email protected]:/etc/
[root@backup ~]# rsync -avz [email protected]:/root/hello.txt .
問題:
1.用戶權限問題
[root@oldboy ~]# rsync -avz [email protected]:/root/hello.txt /tmp/
receiving incremental file list
rsync: change_dir "/root" failed: Permission denied (13)
2.用戶身份暴露了,安全隱患
3.檔案路徑暴露了,安全隱患
守護行程
rsync自身非常重要的功能(不使用系統用戶,更加安全)
服務器的配置流程:
- [ ] 1.安裝軟體包
yum install -y rsync
- [ ] 2.修改組態檔
1)查找組態檔
[root@oldboy ~]# rpm -qc rsync
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
[root@oldboy ~]# rpm -ql rsync | grep etc
/etc/rsyncd.conf
/etc/sysconfig/rsyncd
2)修改組態檔
[root@backup ~]# vim /etc/rsyncd.conf
# 全域模塊
uid = rsync --- 運行行程的用戶
gid = rsync --- 運行行程的用戶組
port = 873 --- 監聽埠
fake super = yes --- 無需讓rsync以root身份運行,允許存盤檔案的完整屬性(3.1版本之后)
use chroot = no --- 關閉假根功能
max connections = 200 --- 最大連接數
timeout = 600 --- 超時時間
ignore errors --- 忽略錯誤資訊
read only = false --- 對備份資料可讀寫
list = false --- 不允許查看模塊資訊
auth users = rsync_backup --- 定義虛擬用戶,作為連接認證用戶
secrets file = /etc/rsync.passwd ---定義rsync服務用戶連接認證密碼檔案路徑
##區域模塊
[backup] --- 定義模塊資訊
comment = commit --- 模塊注釋資訊
path = /backup --- 定義接收備份資料目錄
- [ ] 3.創建程式用戶
useradd -M -s /sbin/nologin rsync
- [ ] 4.創建目錄,并修改所屬
mkdir [-p] /backup
chown -R rsync.rsync /backup
- [ ] 5.創建虛擬用戶認證檔案
echo "rsync_backup:1" >/etc/rsync.password
chmod 600 /etc/rsync.password
- [ ] 6.啟動服務
systemctl start rsyncd
systemctl enable rsyncd
注意:一定要查看是否啟動成功
[root@oldboy ~]# systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
Active: active (running) since 四 2018-09-27 11:18:52 CST; 37s ago
[root@oldboy ~]# lsof -i:873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 4187 root 3u IPv4 44003 0t0 TCP *:rsync (LISTEN)
rsync 4187 root 5u IPv6 44004 0t0 TCP *:rsync (LISTEN)
[root@oldboy ~]# ss -antp | grep rsync
LISTEN 0 5 *:873 *:* users:(("rsync",pid=4187,fd=3))
LISTEN 0 5 :::873 :::* users:(("rsync",pid=4187,fd=5))
[root@oldboy ~]# netstat -antp | grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4187/rsync
tcp6 0 0 :::873 :::* LISTEN 4187/rsync
客戶端驗證程序:
- [ ] 1.安裝rsync包
yum install -y rsync
- [ ] 2.驗證
Access via rsync daemon: 守護行程方式傳輸
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
- 1)推:上傳
客戶端推送/etc/下所有內容至Rsync服務端:
[root@nfs ~]# rsync -avz /etc/ [email protected]::backup
- 2)拉:下載
在服務端創建下拉檔案\
[root@backup ~]# cp /etc/passwd /etc/fstab /etc/hosts /backup/
客戶端從服務端將backup模塊下的內容拉到本地
[root@nfs ~]# rsync -avz [email protected]::backup/ /tmp/
-
[ ] 3.免密
-
方法一:在客戶端上創建密碼檔案,并給600的權限
[root@nfs ~]# echo "1" > /etc/rsync.password
[roonfsfs ~]# chmod 600 /etc/rsync.password
[root@nfs ~]# rsync -avz [email protected]::backup/ /tmp/ --password-file=/etc/rsync.password
- 方法二:定義變數
[rnfs@nfs ~]# export RSYNC_PASSWORD=1
[root@nfs ~]# rsync -avz [email protected]::backup/ /tmp/
4.Rsync服務實踐
排除注意:
1.客戶端使用rsync報錯資訊:auth failed on module backup
查看服務器端/var/log/messages
1)Sep 27 12:12:52 backup rsyncd[1385]: secrets file must not be other-accessible (see strict modes option)
表示權限的問題,
解決方法:chmod 600 /etc/rsync.password
2)……
2.需要考慮服務端下拉的檔案權限,主要是讀權限
root@nfs ~]# rsync -avz [email protected]::backup/ /tmp/
Password:
receiving incremental file list
rsync: failed to read xattr user.rsync.%stat for "messages" (in backup): Permission denied (13)
rsync: failed to read xattr user.rsync.%stat for "secure" (in backup): Permission denied (13)
./
rsync: send_files failed to open "messages" (in backup): Permission denied (13)
rsync: send_files failed to open "secure" (in backup): Permission denied (13)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/158638.html
標籤:Linux
