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/:要推送的內容所在目錄
rsync_backup:服務器端rsync服務的同步的用戶名(非Linux用戶)
192.168.197.129:rsync服務器IP地址
backup:rsync服務器配置文件裏的模塊
--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工作原理 及 部署