rsync同步工具實戰詳解

rsync介紹:

是一款開源的、快速的、多功能的、全量及增量的本地貨遠程數據同步備份工具

Rsync的工作方式:
1.單個主機本地local之間的數據傳輸(類似cp命令)
2.藉助rcp,ssh等通道來傳輸數據(類似於scp)
3.以守護進程(socket)的方式傳輸數據(rsync自身重要的功能)

使用本地同步備份數據方式:

直接本地同步:相當於cp (cp 源 目標 ) ( rsync 源 目標 )

#保持屬性同步:
cp -a (-d設備 -p屬性同步 -r目錄 ) 源 目標
rsync -avz 源 目標
使用rsync刪除文件:mkdir /null(創建一個空目錄)
rsync -r --delete /null/ /data/

使用ssh方式

類似於scp,借用ssh通道來進行傳輸數據
scp -P52113 -rp /etc/hosts [email protected]:/tmp
rsync -avz -e 'ssh -p 52113' /etc/hosts [email protected]:/tmp

ps:-e 代表指定使用ssh通道

使用doment方式

一、服務端配置:
1)軟件安裝:yum install rsync
2)查看軟件命令路徑:which rsync
3)查看軟件版本:rsync -version 或(rpm -qa rsync)
4)創建配置文件:vim /etc/rsyncd.conf

[root@DB2 hzftp]# vim /etc/rsyncd.conf
uid = rsync
gid = rsync
port= 873
address= 172.17.0.112
use chroot = no
max connections = 20
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[hzftp]
path = /var/ftp/hzftp
ignore errors
read only = false
list = false
hosts allow = 172.17.0.21/24
hosts deny = 0.0.0.0/32
auth users = backup
secrets file = /etc/rsync.pwd



配置文件內容詳細講解:

########################配置文件解釋############################
uid = rsync #虛擬用戶,需創建
gid = rsync #虛擬用戶組
port= 873 #rsync默認的接口
address= 172.17.0.112 #默認自己A服務器端的ip地址
use chroot = no #表示連接成功後是否自動切換目錄(yes/no)
max connections = 20 #最大連接數
pid file = /var/run/rsyncd.pid #pid文件存放的位置(rsyncd.pid存放路徑)
lock file = /var/run/rsync.lock #鎖文件存放僞裝 (rsync.lock存放路徑)
log file = /var/log/rsyncd.log #日誌文件存放位置(rsyncd.log存放路徑)

[hzftp] #(模塊名)比較重要,rsync客戶機同步的時候需要填寫
path = /var/ftp/hzftp #服務器上共享目錄的位置(一定要存在,如果沒有需創建)
ignore errors
read only = false #是否只讀
list = false #允許列表
hosts allow = 172.17.0.21/24 #允許的主機 (可以是IP也可以是IP段,加,號隔開)
hosts deny = 0.0.0.0/32 #不允許的主機
auth users = backup # 備份連接使用的賬戶(需要創建用戶useradd bakcup
secrets file = /etc/rsync.pwd # 備份連接使用的賬戶密碼(這裏直接新建個文件即可)如下圖
#########################結束###############################

5)創建虛擬用戶rsync
創建用戶(不能登錄系統):useradd rsync -s /sbin/nologin
修改path的所有人和所屬組:chown -R rsync.rsync /var/ftp/hzftp
創建rsync連接用的認證文件:echo "backup:shuyun2018" >/etc/rsync.pwd
修改rsync認證文件的權限:chmod 600 /etc/rsync.pwd
啓用rsync服務:rsync --daemon
查看服務端口netstat -lntup|grep 873
查看服務:ps -ef|grep rsync
檢查防火牆以及SELINUX是否關閉:getenforce--查看SELINUX狀態
至此,服務端配置結束。

二、客戶端配置:(操作一般都是在客戶端上進行)
1)登錄到客戶端首先檢查rsync服務是否安裝:rpm -qa rsync
2)同樣創建連接認證文件:echo "shuyun2018" >/etc/rsync.pwd

ps:客戶端上我們只填密碼即可,無需填用戶名

3)修改認證文件權限:chmod 600 /etc/rsync.pwd
4)標準拉取文件格式:<兩種方法拉取>

rsync -avz [email protected]::hzftp/test1 /data1 --password-file=/etc/rsync.pwd

rsync -avz rsync://[email protected]/hzftp/test1 /data1/ --password-file=/etc/rsync.pwd

ps:從服務器端往客戶端上拉取數據

5)標準推送文件格式:<兩種方法推送>

rsync -avz /data1 [email protected]::hzftp/test1 --password-file=/etc/rsync.pwd

rsync -avz /data1 rsync://[email protected]/hzftp/test1 --password-file=/etc/rsync.pwd

ps:從客戶端往服務器端推送數據

注意:模塊名<hzftp>後可以跟具體文件路徑


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

小結:(知識回顧)

rsync server服務端:

1.vim /etc/rsyncd.conf (用戶、模塊、共享目錄、虛擬用戶、密碼文件)
2.創建共享目錄 /var/ftp/hzftp
3.創建rsync用戶,授權訪問/var/ftp/hzftp
4.創建密碼文件,複製配置文件裏的路徑《文件內容》==(虛擬用戶名:密碼)

注意操作習慣:/etc/rsync.pwd文件不要加d

5.密碼文件權限修改爲600
6.啓動服務:rsync --daemon成功後放入/etc/rc.local文件(本地開機啓動rsync)

注意操作習慣:一定要全路徑添加,which rsync 找到路徑位置

7.tail /var/log/rsyncd.log

> rsync client客戶端:

1.密碼文件和服務端沒有任何關係。命令時需要
--password-file=/etc/rsync.pwd 內容:密碼(不需要用戶名)
2.修改/etc/rsync.pwd 600
客戶端的密碼權限也要降低,安全考慮
排錯思路:
1.防火牆和selinux是否關閉
2./var/log/rsyncd/log
3.整個部署流程整體考慮


客戶端排除打包操作:

首先我們man rsync 一下然後找到下面這兩個選項:
--exclude=pattern 使用時直接跟原文件名;
--exclude-from=file 將排除的文件名以列的方式輸入到一個文件裏面,使用時直接使用文件名即可;

排除單個文件:
rsync -avz --exclude=a /data1 [email protected]::hzftp/test1 --password-file=/etc/rsync.pwd
排除多個文件:
排除文件a和文件f(不連續文件以逗號區分)
rsync -avz --exclude={a,f} /data1 [email protected]::hzftp/test1 --password-file=/etc/rsync.pwd
排除包含文件a到文件g之間所有文件(連續文件)
rsync -avz --exclude={a..g} /data1 [email protected]::hzftp/test1 --password-file=/etc/rsync.pwd
排除文件test裏所有列出的文件(test裏以列區分文件)
rsync -avz --exclude-from=test /data1 [email protected]::hzftp/test1 --password-file=/etc/rsync.pwd

服務端排除打包操作:(一般不在服務端控制)

#在服務端man rsyncd.conf 搜索exclude
直接在配置文件裏面添加一行exclude=a b c (文件名以空格隔開)
殺進程的方法:kill cat /var/run/rsyncd.pid 或(pkill rsync)
啓用服務:rsync --daemon

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章