自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

運(yùn)維必備!Linux 遠(yuǎn)程數(shù)據(jù)同步工具詳解

運(yùn)維 系統(tǒng)運(yùn)維 數(shù)據(jù)中心
Rsync(remote synchronize)是一個遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺主機(jī)間的文件。

[[249093]]

 一、簡介

1 認(rèn)識

Rsync(remote synchronize)是一個遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺主機(jī)間的文件。Rsync使用所謂的“Rsync算法”來使本地和遠(yuǎn) 程兩個主機(jī)之間的文件達(dá)到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當(dāng)快;

Rsync支持大多數(shù)的類Unix系統(tǒng),無論是Linux、Solaris還是BSD上都經(jīng)過了良好的測試;

此外,它在windows平臺下也有相應(yīng)的版本,如cwRsync和Sync2NAS等工具

2 原理

Rsync本來是用于替代rcp的一個工具,目前由rsync.samba.org維護(hù),所以rsync.conf文件的格式類似于samba的主配 置文件;

Rsync可以通過rsh或ssh使用,也能以daemon模式去運(yùn)行在以daemon方式運(yùn)行時Rsync server會打開一個873 端口,等待客戶端去連接。

連接時,Rsync server會檢查口令是否相符,若通過口令查核,則可以開始進(jìn)行文件傳輸。***次連通完成時,會把整份文件傳輸一次,以后則就只需進(jìn)行增量備份。

3 特點(diǎn)

可以鏡像保存整個目錄樹和文件系統(tǒng);

可以很容易做到保持原來文件的權(quán)限、時間、軟硬鏈接等;

無須特殊權(quán)限即可安裝;

優(yōu)化的流程,文件傳輸效率高;

可以使用rsh、ssh等方式來傳輸文件,當(dāng)然也可以通過直接的socket連接;

支持匿名傳輸

二、ssh模式

1 本地間同步

  1. 環(huán)境: 172.16.22.11 
  2. # mkdir src # touch src/{a,b,c,d} # mkdir dest # rsync -av 172.16.22.12:/data/test/src/ dest/ --遠(yuǎn)程同步至本地,需輸入root密碼 # rsync -av src/ 172.16.22.12:/data/test/dest/ --本地文件同步至遠(yuǎn)程 # rsync -av src 172.16.22.12:/data/test/dest/ --整個目錄同步過去 # rm -rf src/d --刪除一個文件 d # rsync -av --delete src/ 172.16.22.12:/data/test/dest/ --delete,從目標(biāo)目錄里面刪除無關(guān)的文件 

2、局域網(wǎng)間同步

環(huán)境: 172.16.22.11

  1. # useradd george # passwd george # mkdir /home/george/test # touch /home/george/test/g{1,2,3,4} 

3、局域網(wǎng)指定用戶同步

—172.16.22.12

  1. # useradd george # passwd george # mkdir /home/george/test # touch /home/george/test/g{1,2,3,4} 

—172.16.22.11

  1. # rsync -av src '-e ssh -l george' 172.16.22.12:/home/george --本地同步至遠(yuǎn)程 # rsync -av 172.16.22.12:/home/george/test/g* '-e ssh -l george -p 22' dest/ 

三、daemon模式

  1. 環(huán)境:192.168.22.11 

1、服務(wù)啟動方式

1.1、對于負(fù)荷較重的 rsync 服務(wù)器應(yīng)該使用獨(dú)立運(yùn)行方式

  1. # yum install rsync xinetd --服務(wù)安裝 # /usr/bin/rsync --daemon 

1.2、對于負(fù)荷較輕的 rsync 服務(wù)器可以使用 xinetd 運(yùn)行方式

# yum install rsync xinetd --服務(wù)安裝 # vim /etc/xinetd.d/rsync --配置托管服務(wù),將下項(xiàng)改為 no disable = no # /etc/init.d/xinetd start --啟動托管服務(wù) xinetd # chkconfig rsync on # netstat -ntpl | grep 873 --查看服務(wù)是否啟動

2、配置詳解

兩種 rsync 服務(wù)運(yùn)行方式都需要配置 rsyncd.conf,其格式類似于 samba 的主配置文件

全局參數(shù)

  • 在全局參數(shù)部分也可以定義模塊參數(shù),這時該參數(shù)的值就是所有模塊的默認(rèn)值
  • address —在獨(dú)立運(yùn)行時,用于指定的服務(wù)器運(yùn)行的 IP 地址;由 xinetd 運(yùn)行時將忽略此參數(shù),使用命令行上的 –address 選項(xiàng)替代。默認(rèn)本地所有IP
  • port —指定 rsync 守護(hù)進(jìn)程監(jiān)聽的端口號。 由 xinetd 運(yùn)行時將忽略此參數(shù),使用命令行上的 –port 選項(xiàng)替代。默認(rèn) 873
  • motd file —指定一個消息文件,當(dāng)客戶連接服務(wù)器時該文件的內(nèi)容顯示給客戶
  • pid file —rsync 的守護(hù)進(jìn)程將其 PID 寫入指定的文件
  • log file —指定 rsync 守護(hù)進(jìn)程的日志文件,而不將日志發(fā)送給 syslog
  • syslog facility —指定 rsync 發(fā)送日志消息給 syslog 時的消息級別
  • socket options —指定自定義 TCP 選項(xiàng)
  • lockfile —指定rsync的鎖文件存放路徑
  • timeout = 600 —超時時間

模塊參數(shù)

模塊參數(shù)主要用于定義 rsync 服務(wù)器哪個目錄要被同步。模塊聲明的格式必須為 [module] 形式,這個名字就是在 rsync 客戶端看到的名字,類似于 Samba 服務(wù)器提供的共享名。而服務(wù)器真正同步的數(shù)據(jù)是通過 path 來指定的

基本模塊參數(shù)

  • path —指定當(dāng)前模塊在 rsync 服務(wù)器上的同步路徑,該參數(shù)是必須指定的
  • comment —給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶

模塊控制參數(shù)

  • use chroot = —默認(rèn)為 true,在傳輸文件之前首先 chroot 到 path 參數(shù)所指定的目錄下;優(yōu)點(diǎn),安全;缺點(diǎn),需要 root 權(quán)限,不能備份指向 path 外部的符號連接所指向的目錄文件
  • uid = —指定該模塊以指定的 UID 傳輸文件;默認(rèn)nobody
  • gid = —指定該模塊以指定的 GID 傳輸文件;默認(rèn)nobody
  • max connections —***并發(fā)連接數(shù),0為不限制
  • lock file —指定支持 max connections 參數(shù)的鎖文件。默認(rèn) /var/run/rsyncd.lock
  • list —指定當(dāng)客戶請求列出可以使用的模塊列表時,該模塊是否應(yīng)該被列出。默認(rèn)為 true,顯示
  • read only = —只讀選擇,也就是說,不讓客戶端上傳文件到服務(wù)器上。默認(rèn)true
  • write only = —只寫選擇,也就是說,不讓客戶端從服務(wù)器上下載文件。默認(rèn)false
  • ignore errors —忽略IO錯誤。默認(rèn)true
  • ignore nonreadable —指定 rysnc服務(wù)器完全忽略那些用戶沒有訪問權(quán)限的文件。這對于在需要備份的目錄中有些不應(yīng)該被備份者獲得的文件時是有意義的。 false
  • timeout = —該選項(xiàng)可以覆蓋客戶指定的 IP 超時時間。從而確保 rsync 服務(wù)器不會永遠(yuǎn)等待一個崩潰的客戶端。對于匿名 rsync 服務(wù)器來說,理想的數(shù)字是 600(單位為秒)。 0 (未限制)
  • dont compress —用來指定那些在傳輸之前不進(jìn)行壓縮處理的文件。該選項(xiàng)可以定義一些不允許客戶對該模塊使用的命令選項(xiàng)列表。必須使用選項(xiàng)全名,而不能是簡稱。當(dāng)發(fā)生拒絕某個選項(xiàng)的情況時,服務(wù)器將報告錯誤信息然后退出。例如,要防止使用壓縮,應(yīng)該是:”dont compress = ”。 .gz.tgz .zip.z .rpm.deb .iso.bz2 .tbz

模塊文件篩選參數(shù)

  • exclude —指定多個由空格隔開的多個文件或目錄(相對路徑),并將其添加到 exclude 列表中。這等同于在客戶端命令中使用 –exclude 來指定模式
  • exclude from —指定一個包含 exclude 規(guī)則定義的文件名,服務(wù)器從該文件中讀取 exclude 列表定義
  • include —指定多個由空格隔開的多個文件或目錄(相對路徑),并將其添加到 include 列表中。這等同于在客戶端命令中使用 –include 來指定模式
  • include from —指定一個包含 include 規(guī)則定義的文件名,服務(wù)器從該文件中讀取 include 列表定義

模塊用戶認(rèn)證參數(shù)

  • auth users —指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊(和系統(tǒng)用戶沒有任何關(guān)系)。用戶名和口令以明文方式存放在 secrets file 參數(shù)指定的文件中。默認(rèn)為匿名方式
  • secrets file —指定一個 rsync 認(rèn)證口令文件。只有在 auth users 被定義時,該文件才起作用。文件權(quán)限必須是 600
  • strict modes —指定是否監(jiān)測口令文件的權(quán)限。為 true 則口令文件只能被 rsync 服務(wù)器運(yùn)行身份的用戶訪問,其他任何用戶不可以訪問該文件。默認(rèn)為true

模塊訪問控制參數(shù)

  • hosts allow —用一個主機(jī)列表指定哪些主機(jī)客戶允許連接該模塊。不匹配主機(jī)列表的主機(jī)將被拒絕。默認(rèn)值為 *
  • hosts deny —用一個主機(jī)列表指定哪些主機(jī)客戶不允許連接該模塊

模塊日志參數(shù)

  • transfer logging —使 rsync 服務(wù)器將傳輸操作記錄到傳輸日志文件。默認(rèn)值為false
  • log format —指定傳輸日志文件的字段。默認(rèn)為:”%o %h [%a] %m (%u) %f %l”

設(shè)置了”log file”參數(shù)時,在日志每行的開始會添加”%t [%p]“;

可以使用的日志格式定義符如下所示:

  • %o —操作類型:”send” 或 “recv”
  • %h —遠(yuǎn)程主機(jī)名
  • %a —遠(yuǎn)程IP地址
  • %m —模塊名
  • %u —證的用戶名(匿名時是 )
  • %f —文件名
  • %l —文件長度字符數(shù)
  • %p —該次 rsync 會話的 PID
  • %P —模塊路徑
  • %t —當(dāng)前時間
  • %b —實(shí)際傳輸?shù)淖止?jié)數(shù)
  • %c —當(dāng)發(fā)送文件時,記錄該文件的校驗(yàn)碼

3、服務(wù)端配置

  1. # vim /etc/rsyncd.conf --為 rsyncd 服務(wù)編輯配置文件,默認(rèn)沒有,需自己編輯 
  • uid = root —rsync運(yùn)行權(quán)限為root
  • gid = root —rsync運(yùn)行權(quán)限為root
  • use chroot = no —是否讓進(jìn)程離開工作目錄
  • max connections = 5 —***并發(fā)連接數(shù),0為不限制
  • timeout = 600 —超時時間
  • pid file = /var/run/rsyncd.pid —指定rsync的pid存放路徑
  • lockfile = /var/run/rsyncd.lock —指定rsync的鎖文件存放路徑
  • log file = /var/log/rsyncd.log —指定rsync的日志存放路徑
  • [web1] —模塊名稱

path = /data/test/src —該模塊存放文件的基礎(chǔ)路徑

ignore errors = yes —忽略一些無關(guān)的I/O錯誤

read only = no —客戶端可以上傳

write only = no —客戶端可以下載

hosts allow = 192.168.22.12 —允許連接的客戶端主機(jī)ip

hosts deny = —黑名單,表示任何主機(jī)

list = yes

auth users = web —認(rèn)證此模塊的用戶名

secrets file = /etc/web.passwd —指定存放“用戶名:密碼”格式的文件

  1. # mkdir /data/test/src --創(chuàng)建基礎(chǔ)目錄 # mkdir /data/test/src/george --再創(chuàng)建一個目錄 # touch /data/test/src/{1,2,3} # echo "web:123" > /etc/web.passwd --創(chuàng)建密碼文件 # chmod 600 /etc/web.passwd # service xinetd restart 

四、測試

1、客戶端

  1. 環(huán)境:192.168.22.12 
  2.  
  3. # yum -y install rsync # mkdir /data/test 

2、小試參數(shù)

# rsync -avzP web@192.168.22.11::web1 /data/test/ --輸入密碼 123;將服務(wù)器 web1 模塊里的文件同步至 /data/test,參數(shù)說明:

  • -a —參數(shù),相當(dāng)于-rlptgoD,
  • -r —是遞歸
  • -l —是鏈接文件,意思是拷貝鏈接文件
  • -i —列出 rsync 服務(wù)器中的文件
  • -p —表示保持文件原有權(quán)限
  • -t —保持文件原有時間
  • -g —保持文件原有用戶組
  • -o —保持文件原有屬主
  • -D —相當(dāng)于塊設(shè)備文件
  • -z —傳輸時壓縮
  • -P —傳輸進(jìn)度
  • -v —傳輸時的進(jìn)度等信息,和-P有點(diǎn)關(guān)系
  1. # rsync -avzP --delete web@192.168.22.11::web1 /data/test/ --讓客戶端與服務(wù)器保持完全一致, --delete # rsync -avzP --delete /data/test/ web@192.168.22.11::web1 --上傳客戶端文件至服務(wù)端 # rsync -avzP --delete /data/test/ web@192.168.22.11::web1/george --上傳客戶端文件至服務(wù)端的 george 目錄 # rsync -ir --password-file=/tmp/rsync.password web@192.168.22.11::web1 --遞歸列出服務(wù)端 web1 模塊的文件 # rsync -avzP --exclude="*3*" --password-file=/tmp/rsync.password web@192.168.22.11::web1 /data/test/ --同步除了路徑以及文件名中包含 “3” *的所有文件 

3、通過密碼文件同步

  1. # echo "123"> /tmp/rsync.password # chmod 600 /tmp/rsync.password # rsync -avzP --delete --password-file=/tmp/rsync.password web@192.168.22.11::web1 /data/test/ --調(diào)用密碼文件 

4、客戶端自動同步

  1. # crontab -e 
  2. 10 0 * rsync -avzP —delete —password-file=/tmp/rsync.password web@192.168.22.11::web1 /data/test/ 
  3. # crontab -l 

五、數(shù)據(jù)實(shí)時同步

環(huán)境:Rsync + Inotify-tools

1、inotify-tools

  • 是為linux下 inotify文件監(jiān)控工具提供的一套c的開發(fā)接口庫函數(shù),同時還提供了一系列的命令行工具,這些工具可以用來監(jiān)控文件系統(tǒng)的事件
  • inotify-tools是用c編寫的,除了要求內(nèi)核支持 inotify 外,不依賴于其他
  • inotify-tools提供兩種工具:一是inotifywait,它是用來監(jiān)控文件或目錄的變化,二是inotifywatch,它是用來統(tǒng)計(jì)文件系統(tǒng)訪問的次數(shù)

2、安裝inotify-tools

  1. # yum install –y gcc --安裝依賴 # mkdir /usr/local/inotify # tar -xf inotify-tools-3.14.tar.gz # cd inotify-tools-3.14 # ./configure --prefix=/usr/local/inotify/ # make && make install 

3、設(shè)置環(huán)境變量

  1. # vim /root/.bash_profile 
  1. export PATH=/usr/local/inotify/bin/:$PATH 
  2. # source /root/.bash_profile # echo '/usr/local/inotify/lib' >> /etc/ld.so.conf --加載庫文件 # ldconfig # ln -s /usr/local/inotify/include /usr/include/inotify 

4、常用參數(shù)

  • -m —始終保持監(jiān)聽狀態(tài),默認(rèn)觸發(fā)事件即退出
  • -r —遞歸查詢目錄
  • -q —打印出監(jiān)控事件
  • -e —定義監(jiān)控的事件,可用參數(shù):
  • access —訪問文件
  • modify —修改文件
  • attrib —屬性變更
  • open —打開文件
  • delete —刪除文件
  • create —新建文件
  • move —文件移動
  • —fromfile —從文件讀取需要監(jiān)視的文件或者排除的文件,一個文件一行,排除的文件以@開頭
  • —timefmt —時間格式
  • —format —輸出格式
  • —exclude —正則匹配需要排除的文件,大小寫敏感
  • —excludei —正則匹配需要排除的文件,忽略大小寫
  • %y%m%d %H%M —年月日時鐘
  • %T%w%f%e —時間路徑文件名狀態(tài)

5、測試一

檢測源目錄中是否有如下動作:modify,create,move,delete,attrib;

一旦發(fā)生則發(fā)布至目標(biāo)機(jī)器;

方式為 sshsrc: 192.168.22.11(Rsync + Inotify-tools) dest: 192.168.22.12

兩臺機(jī)器需要做好 ssh 免密登錄

  1. # mdkir /data/test/dest/ --dest機(jī)器 # mdkir /data/test/src/ --src機(jī)器 # rsync -av --delete /data/test/src/ 192.168.22.12:/data/test/dest --測試下命令 # vim /data/test/test.sh #!/bin/bash /usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete,attrib /data/test/src | while read events do rsync -a --delete /data/test/src/ 192.168.22.12:/data/test/dest echo "`date +'%F %T'` 出現(xiàn)事件:$events" >> /tmp/rsync.log 2>&1 done # chmod 755 /data/test/test.sh # /data/test/test.sh & # echo '/data/test/test.sh &' >> /etc/rc.local --設(shè)置開機(jī)自啟 

我們可以在目標(biāo)機(jī)上也寫一個這樣的腳本:

rsync -a —delete /data/test/dest/ 192.168.22.11:/data/test/src ;

這樣可以實(shí)現(xiàn)雙向同步

作者:一個小運(yùn)維

 

來源:https://www.cnblogs.com/george-guo/p/7718515.html

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2013-12-18 10:56:48

Linux運(yùn)維運(yùn)維技能

2022-07-05 10:50:56

運(yùn)維Linuxtcpdump

2019-03-19 08:41:38

Linux運(yùn)維變更

2025-03-21 07:07:59

2019-09-02 07:53:09

Linuxrsync服務(wù)器

2024-02-20 07:32:18

Rsync遠(yuǎn)程同步工具傳輸數(shù)據(jù)

2019-04-25 15:35:37

MySQL數(shù)據(jù)庫運(yùn)維Linux

2019-06-06 08:50:08

運(yùn)維監(jiān)控工具

2020-09-24 10:50:10

運(yùn)維架構(gòu)技術(shù)

2021-09-02 11:38:12

Linux運(yùn)維工具

2018-10-30 12:29:24

2018-03-31 23:18:35

2017-12-04 11:19:01

Linux運(yùn)維同步網(wǎng)絡(luò)時間

2017-02-03 20:50:08

Linux

2019-08-30 09:54:39

LinuxC語言文本編輯器

2016-12-08 14:19:12

數(shù)據(jù)中心運(yùn)維工程師

2020-01-09 14:00:28

Linux運(yùn)維面試精華

2020-12-08 12:50:17

向日葵遠(yuǎn)程運(yùn)維

2014-08-15 08:51:25

Wi-Fi運(yùn)維

2018-10-10 11:18:39

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號