天天看點

rsync 操作及部署

1 基礎知識

1.1 Rsync簡介

可實作全量及增量、本地或遠端的資料同步備份的工具

官網:rsync(1) man page

相當于cp(本地複制)、scp(遠端複制)、rm(删除)指令的合體但比這三個指令更優秀

既能夠備份資料内容,也能夠備份屬性資訊

1.2 Rsync優缺點:

  1. 優點:
  • 支援拷貝特殊檔案如連結檔案,裝置等
  • 可以有排除指定檔案或目錄同步的功能,相當于打包指令tar的排除功能
  • 可以做到保持元檔案或目錄的權限、時間、軟硬連結、屬主、組等所有屬性均不變
  • 可時間增量同步、即隻同步發生變化的資料,是以資料的效率很高
  • 可以使用rcp,rsh,ssh等方式來配合傳輸檔案達到加密傳輸
  • 可以通過socket(守護程序方式)傳輸檔案和資料(服務端和用戶端)
  • 支援匿名的、認證的(無需系統使用者)程序模式傳輸,可友善安全的進行資料備份及鏡像
  1. 缺點:
  • 大量小檔案同步的時候,時間較長,有時候rsync程序可能會停止
  • 同步10G這樣的大文時時,可能會中斷,未完整同步前,是隐藏檔案
  • rsync本身不對資料加密,需配合ssh等實作加密

1.3 Rsync的工作方式

  • 單個主機本地之間的資料傳輸(類似于cp)
  • 借助rcp,ssh等通道來傳輸資料(類似于scp)
  • 以守護程序(socket)的方式來傳輸資料(服務端和用戶端)

2 普通用法

2.1 基本參數

常用參數:avz或az

-v	詳細模式輸出,傳輸時的進度等資訊
-z	傳輸時進行壓縮以提高傳輸效率。--compress-level=NUM可按級别壓縮
-a	歸檔模式,表示以遞歸方式傳輸檔案,并保持檔案說有屬性,等于rtopgDI
-r	對子目錄以遞歸傳遞,即目錄下的所有目錄都同樣傳輸,注意是小寫r
-t	保持穩健時間資訊
-o	保持檔案屬主資訊
-p	保持檔案權限
-g	保持檔案屬組資訊
-P	顯示同步的過程及傳輸的進度等資訊
-D	保持裝置檔案資訊
-l	保留軟連結
-e	使用指定的shell程式替代傳輸用的rsh管道,如ssh
--exclude=PATTERN	指定排除不需要傳輸的檔案模式(和tar參數一樣)
--exclude-from=file	指定排除某個目錄中的某個檔案(和tar參數一樣)
--bwlimit=RATE		限制傳輸時的帶寬(避免全部占用完帶寬)
--partial	斷點續傳
--delete	讓目标目錄和源目錄資料保持一緻(不一緻會删除)
           

2.2 普通模式

  1. 本地模式文法:
rsync [OPTION...] 源路徑 目的路徑
           
  1. 遠端模式文法:
拉: rsync [OPTION...] [遠端使用者@]主機名或IP:源路徑 目标路徑
推: rsync [OPTION...] 源路徑 [遠端使用者@]主機名或IP:目标路徑
           

PS1:前面的是原路徑,後面的是目标路徑,推和拉的差別僅僅是遠端位址所在的位置

PS2:遠端使用者名可省略,省略代表用本機目前使用者去連接配接

  1. 應用舉例
  • 備份本機hosts檔案到到tmp目錄
rsync -avz /etc/hosts /tmp
           
  • 推送本機hosts檔案到另外一台主機tmp目錄
rsync -avz /etc/hosts [email protected]:/tmp/
           
  • 拉取遠端主機hosts檔案本機tmp目錄
rsync -avz [email protected]:/etc/hosts /tmp/
           
  • 配合ssh加密傳輸資料[-e]
rsync -avz -e 'ssh -p 22' /etc/hosts [email protected]:/tmp/
           
  • 同步時排除某些檔案[--exclude]
rsync -avz --exclude=a.txt /backup/ [email protected]:/tmp/
rsync -avz --exclude-from=paichu.txt /backup/ [email protected]:/tmp/
--exclude參數使用相對路徑,可以排除單個和多個檔案
也可以用--exclude-from=paichu.txt,排除這個檔案中指定的檔案
           
  • 無差異同步[--delete]
rsync -avz --delete /backup/ [email protected]:/tmp/
--delete會把伺服器上有而本地沒有的資料全部删除,非常危險,慎用慎用
           
  • 限速[--bwlimit]
sync -avz --bwlimit=100 /backup/ [email protected]:/tmp/
           

3. 守護程序模式(重點)

3.1 基礎說明

搭建服務端啟動守護程序(873端口),然後在用戶端推或拉資料進行備份,比普通遠端模式好的地方在于,免互動的備份資料,配合定時任務食用更加.

文法

拉: rsync [OPTION...] [USER@]HOST::SRC DEST
推: rsync [OPTION...] SRC [USER@]HOST::DEST
           
PS:推拉的差別同普通模式,用的更多的是推模式,因為拉的模式用戶端數量很大時,會非常消耗服務端資源,而推模式請求由用戶端發起,不占用服務端資源

3.2 伺服器端配置過程:

  1. 檢查和安裝rsync
rpm -qa rsync
線上安裝
yum install -y rsync
離線安裝
rpm -ivh rsync-3.1.2-10.el7.x86_64.rpm
           

先檢查是否有安裝,如果有則安裝

      2.添加rsync服務的使用者

useradd -s /sbin/nologin -M rsync
id rsync 
           
  1. 生成rsyncd.conf配置檔案并寫入内容
cat >/etc/rsync/rsyncd.conf <<"EOF"
##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 
ignore errors
fake super = yes
list = false
hosts allow = 192.168.1.66 192.168.1.95
#hosts deny = 0.0.0.0/32 
auth users = jyy 
secrets file = /etc/rsync/rsync.password
[backup] 
comment = "backup dir by noah"
path = /backup 
read only = false 
EOF
           

關于配置檔案各行的說明見文檔最後

4) 建立共享目錄并授權rsync服務管理

mkdir -p backup
chown -R rsync.rsync /backup/ #配置檔案用的是rsync使用者
           
  1. 建立認證檔案并修改權限
echo "jyy:123456" >/etc/rsync/rsync.password
/etc/rsync/rsync.password
chmod 600 /etc/rsync.password
ls -l /etc/rsync.password
           

此處的使用者和密碼,非系統中的使用者和密碼

6) 啟動rsync服務加入開機啟動

#啟動rsync服務,systemctl start rsyncd 啟動也可
/usr/bin/rsync --daemon
netstat -nltp|grep 873
#設定開機啟動服務
echo "/usr/bin/rsync --daemon" >>/etc/rc.local
tail -1 /etc/rc.local
           

3.3 用戶端配置

  1. 檢查和安裝rsync
rpm -qa rsync
線上安裝
yum install -y rsync
離線安裝
rpm -ivh rsync-3.1.2-10.el7.x86_64.rpm
           
  1. 生成連結伺服器需要的密碼檔案
echo "123456" >/etc/rsync/rsync.password
chmod 600 /etc/rsync.password
           

#隻需要密碼不需要使用者名

啟動rsync用戶端。

#啟動rsync服務,systemctl start rsyncd 啟動也可
/usr/bin/rsync --daemon
           

3) 同步資料(推送)

rsync -avz --password-file=/etc/rsync/rsync.password
 /etc/hosts [email protected]::backup 
           

提示:在用戶端執行指令。ip後面跟的backup是伺服器配置檔案中的子產品名,不是備份路徑

4 配置檔案說明

  1. 配置檔案整體說明
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	#日志檔案
ignore errors		#忽略錯誤
list = false		#不允許清單(ls)
hosts allow = 192.168.1.0/24	#白名單,允許的網段
#hosts deny = 0.0.0.0/32		#黑名單,拒絕的網段
auth users = jyy	#連結的虛拟使用者,非系統使用者
secrets file = /etc/rsync/rsync..password	#虛拟使用者的賬号密碼檔案
[backup]			#子產品名稱,可以有多個,稱為多子產品
comment = "backup dir by noah" 子產品描述資訊
path = /backup	#伺服器提供的共享目錄 
read only = false	#可寫
           

注意不要在配置檔案中某一行後面用#号寫注釋,識别不了的,注釋用的#号必須寫在行首

2) 黑白名單三種情況說明:

  • 隻有白名單,白名單網段或主機資訊允許。其餘阻止
  • 隻有黑名單,黑名單網段或主機資訊阻止,其餘允許
  • 黑白名單都有,相當于隻有黑名單的方式

    建議使用白名單方式

注:報錯1:rsync: chgrp "." (in backup) failed: Permission denied (13)

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
           

關閉SELinux:

1、臨時關閉(不用重新開機機器):

setenforce 0                  ##設定SELinux 成為permissive模式

                                     ##setenforce 1 設定SELinux 成為enforcing模式

2、修改配置檔案需要重新開機機器:

修改/etc/selinux/config 檔案

将SELINUX=enforcing改為SELINUX=disabled

重新開機機器即可

本文檔參考rsync操作和部署文檔 · linux運維 · 看雲。

繼續閱讀