1. 程式人生 > >rsync工作原理 及 部署

rsync工作原理 及 部署

用戶 users 屬性 需要 禁止ip 虛擬賬戶 開始 業務 rsync命令

---恢復內容開始---

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

  rsync在遠程之間進行數據傳輸類似於scp的功能 但又優於scp功能 因為我們的scp每次進行數據傳送時都是全量進行備份傳送 而rsync可進行增量傳送 意思就是將那邊沒有的進行傳送 它每次傳送前都有一個比對功能進行比對

  rsync在本地之間進行數據傳送類似於cp的功能 但又優於cp的功能 因為cp的每次復制也是全量的復制 而 rsync可進行增量復制 同樣是比對功能的體現

本地之間的數據傳輸 語法 例如:

rsync /etc/hosts /tmp

將/etc/hosts文件推到/tmp目錄下 這是本地目錄之間的推送

rsync -avz /etc/ /tmp/

 將/etc下的所有文件全部都傳送到/tmp下 並保持文件的屬性不發生變化

rsync -avz /etc /tmp


rsync -avz /etc/ /tmp

  請註意以上兩種方法的區別 上邊的一種是將etc連帶目錄本身全部推送到/tmp下

而下邊一種是只將/etc下邊的所有目錄及文件推送到/tmp下 並不包括目錄本身

以上是本地目錄之間的推送 接下來是不同主機之間的傳輸數據

將當前主機推送到遠程主機:

rsync -avz /etc/ [email protected]:/tmp/

  這是將/etc/下的所有文件推送到 192.168.92.129主機的tmp目錄下

這裏默認是22端口 所以我們不需要進行 ‘ssh -p 22’

將遠程主機的內容拉取到當前主機:

 

rsync -avz -e ‘ssh -p 22‘ [email protected]:/tmp /tmp

  這是將 遠成主機192.168.92.129主機的tmp目錄下的素有文件拉取到當前主機的tmp目錄下

參數說明:

-avz 表示同步文件或目錄時屬性不發生變化

-P 顯示同步的過程

-e ‘ssh -p 22‘ 表示通過ssh通道22端口進行傳輸 可省略

[email protected]:/tmp 遠程主機的用戶 地址 路徑

也可以直接在本地的/etc/.hosts文件中進行ip與主機名的映射 然後直接

rsync -avz /etc/ root@liangyawang:/tmp
這就是將192.168.92.129 與主機名梁亞旺進行映射後 就可以直接填寫主機名進行傳送

借助ssh通道進行傳輸時兩邊都需要有openssh-clients遠程支持包 兩邊都需要有rsync命令 業績是

都需要 yum -y install rsync 

 接下來是同過socket方式進行傳輸

部署rsync

mount /dev/sr0 /media/cdrom 

yum -y install rsync
然後 創建並配置/etc/rsyncd.conf配置文件
vim /etc/rsyncd.conf


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

##########################################

[backup]

# 使用目錄

path = /backup/

# 有錯誤時忽略

ignore errors

# 可讀可寫(true或false)

read only = false

# 阻止遠程列表(不讓通過遠程方式看服務端有啥)

list=false

# 允許IP

hosts allow = 192.168.197.0/24

# 禁止IP

hosts deny = 0.0.0.0/32

# 虛擬用戶

auth users = rsync_backup

# 存放用戶和密碼的文件

secrets file = /etc/rsync.password
到此結束

  配置完配置文件接下來我們就要創建共享目錄及添加rsync程序用戶

useradd -s /sbin/nologin -M rsync

創建rsync程序用戶

mkdir /backup

創建共享目錄

然後 就可以啟動rsync了

rsync --daemon

然後將/backup共享目錄的屬主修改為rsync

chown -R rsync /backup

  然後創建虛擬賬戶及密碼

echo "rsync_backup:121109" > /etc/rsync.password

  並將密碼文件權限改為的600

chmod 600 /etc/rsync.password

  然後開始部署 客戶端

只需要安裝 rsync

然後將 服務端的密碼寫入到對應的位置的文件裏

echo "121109" > /etc/rsync.password 

  並且也將權限設置為600 同上邊步驟一樣

然後就可以去到客戶端進行測試 推送測試

rsync -avz /backup/ rsync_backup@192.168.197.129::backup --password-file=/etc/rsync.password

命令說明:

-avz:保持穩健各項屬性不變,-v顯示同步信息 -P顯示具體同步過程

/backup/:要推送的內容所在目錄

  1. rsync_backup:服務器端rsync服務的同步的用戶名(非Linux用戶)
  2. 192.168.197.129:rsync服務器IP地址
  3. backuprsync服務器配置文件裏的模塊
  4. --password-file=/etc/rsync.password:免密碼的操作,指定密碼文件位置,如果不寫,則會要求用戶交互式輸入密碼。(如果想掛定時任務,必須得非交互

我們的rsync的配置文件裏還可以添加很多模塊用來區分以及 將不同的業務推送到不同的模塊去

我們還可以進行拉取 就是在客戶端將服務端的模塊目錄下的文件拉取到當前

比如我自己測試的一條命令復制過來 看一下

rsync -avz [email protected]::mokuai/liu /backup/ --password-file=/etc/rsync.password 
#這就是將rsync服務端共享目錄下的liu 拉取到當前主機/bakcup目錄下 並且免交互

  太詳細的操作步驟在此不做敘述 我有文檔 ??

rsync的優點;增量備份 支持socket

      遠程shel通道模式還可以加密傳輸

缺點:大量小文件進行同步的時候比對時間較長

  同步大文件 10G的打文件優勢也會出現問題

  一次性遠程拷貝還可以用scp 大量小文件要打包成一個包在進行傳送

到此結束 詳細的排錯思路及開發腳本見文檔

rsync工作原理 及 部署