<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 8633字,需瀏覽 18分鐘

           ·

          2022-10-14 21:31


          一、簡(jiǎn)介

          1 認(rèn)識(shí)

          Rsync(remote synchronize)是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過(guò)LAN/WAN快速同步多臺(tái)主機(jī)間的文件。Rsync使用所謂的“Rsync算法”來(lái)使本地和遠(yuǎn) 程兩個(gè)主機(jī)之間的文件達(dá)到同步,這個(gè)算法只傳送兩個(gè)文件的不同部分,而不是每次都整份傳送,因此速度相當(dāng)快;
          Rsync支持大多數(shù)的類Unix系統(tǒng),無(wú)論是Linux、Solaris還是BSD上都經(jīng)過(guò)了良好的測(cè)試;
          此外,它在windows平臺(tái)下也有相應(yīng)的版本,如cwRsync和Sync2NAS等工具

          2 原理

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

          Rsync可以通過(guò)rsh或ssh使用,也能以daemon模式去運(yùn)行
          在以daemon方式運(yùn)行時(shí)Rsync server會(huì)打開(kāi)一個(gè)873 端口,等待客戶端去連接。

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

          3 特點(diǎn)

          1. 可以鏡像保存整個(gè)目錄樹(shù)和文件系統(tǒng);
          2. 可以很容易做到保持原來(lái)文件的權(quán)限、時(shí)間、軟硬鏈接等;
          3. 無(wú)須特殊權(quán)限即可安裝;
          4. 優(yōu)化的流程,文件傳輸效率高;
          5. 可以使用rsh、ssh等方式來(lái)傳輸文件,當(dāng)然也可以通過(guò)直接的socket連接;
          6. 支持匿名傳輸

          二、ssh模式

          1 本地間同步

          環(huán)境:172.16.22.12

          # mkdir src# touch src/{1,2,3,4}# mkdir dest# rsync -av src/ dest/ --將 src 目錄里的所有的文件同步至 dest 目錄(不包含src本身)# rsync -av src dest/ --將 src 目錄包括自己整個(gè)同步至 dest 目錄# rsync -avR src/ dest/ --即使 src 后面接有 / ,效果同上

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

          環(huán)境:172.16.22.11

          # 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/ --整個(gè)目錄同步過(guò)去# rm -rf src/d --刪除一個(gè)文件 d# rsync -av --delete src/ 172.16.22.12:/data/test/dest/ --delete,從目標(biāo)目錄里面刪除無(wú)關(guān)的文件

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

          —172.16.22.12

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

          —172.16.22.11

          # 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模式

          環(huán)境:192.168.22.11

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

          1.1、對(duì)于負(fù)荷較重的 rsync 服務(wù)器應(yīng)該使用獨(dú)立運(yùn)行方式
          # yum install rsync xinetd --服務(wù)安裝# /usr/bin/rsync --daemon
          1.2、對(duì)于負(fù)荷較輕的 rsync 服務(wù)器可以使用 xinetd 運(yùn)行方式
          # yum install rsync xinetd --服務(wù)安裝# vim /etc/xinetd.d/rsync --配置托管服務(wù),將下項(xiàng)改為 nodisable = no# /etc/init.d/xinetd start --啟動(dòng)托管服務(wù) xinetd# chkconfig rsync on# netstat -ntpl | grep 873 --查看服務(wù)是否啟動(dòng)

          2、配置詳解

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

          全局參數(shù)

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


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

          基本模塊參數(shù)

          • path —指定當(dāng)前模塊在 rsync 服務(wù)器上的同步路徑,該參數(shù)是必須指定的

          • comment —給模塊指定一個(gè)描述,該描述連同模塊名在客戶連接得到模塊列表時(shí)顯示給客戶


          模塊控制參數(shù)

          • use chroot = —默認(rèn)為 true,在傳輸文件之前首先 chroot 到 path 參數(shù)所指定的目錄下;優(yōu)點(diǎn),安全;缺點(diǎn),需要 root 權(quán)限,不能備份指向 path 外部的符號(hào)連接所指向的目錄文件

          • 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)客戶請(qǐng)求列出可以使用的模塊列表時(shí),該模塊是否應(yīng)該被列出。默認(rèn)為 true,顯示

          • read only = —只讀選擇,也就是說(shuō),不讓客戶端上傳文件到服務(wù)器上。默認(rèn)true

          • write only = —只寫選擇,也就是說(shuō),不讓客戶端從服務(wù)器上下載文件。默認(rèn)false

          • ignore errors —忽略IO錯(cuò)誤。默認(rèn)true

          • ignore nonreadable —指定 rysnc服務(wù)器完全忽略那些用戶沒(méi)有訪問(wèn)權(quán)限的文件。這對(duì)于在需要備份的目錄中有些不應(yīng)該被備份者獲得的文件時(shí)是有意義的。false

          • timeout = —該選項(xiàng)可以覆蓋客戶指定的 IP 超時(shí)時(shí)間。從而確保 rsync 服務(wù)器不會(huì)永遠(yuǎn)等待一個(gè)崩潰的客戶端。對(duì)于匿名 rsync 服務(wù)器來(lái)說(shuō),理想的數(shù)字是 600(單位為秒)。0 (未限制)

          • dont compress —用來(lái)指定那些在傳輸之前不進(jìn)行壓縮處理的文件。該選項(xiàng)可以定義一些不允許客戶對(duì)該模塊使用的命令選項(xiàng)列表。必須使用選項(xiàng)全名,而不能是簡(jiǎn)稱。當(dāng)發(fā)生拒絕某個(gè)選項(xiàng)的情況時(shí),服務(wù)器將報(bào)告錯(cuò)誤信息然后退出。例如,要防止使用壓縮,應(yīng)該是:”dont compress = ”。 .gz .tgz .zip .z .rpm .deb .iso .bz2 .tbz


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

          • exclude —指定多個(gè)由空格隔開(kāi)的多個(gè)文件或目錄(相對(duì)路徑),并將其添加到 exclude 列表中。這等同于在客戶端命令中使用 –exclude 來(lái)指定模式

          • exclude from —指定一個(gè)包含 exclude 規(guī)則定義的文件名,服務(wù)器從該文件中讀取 exclude 列表定義

          • include —指定多個(gè)由空格隔開(kāi)的多個(gè)文件或目錄(相對(duì)路徑),并將其添加到 include 列表中。這等同于在客戶端命令中使用 –include 來(lái)指定模式

          • include from —指定一個(gè)包含 include 規(guī)則定義的文件名,服務(wù)器從該文件中讀取 include 列表定義


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

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


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

          • hosts allow —用一個(gè)主機(jī)列表指定哪些主機(jī)客戶允許連接該模塊。不匹配主機(jī)列表的主機(jī)將被拒絕。默認(rèn)值為 *
          • hosts deny —用一個(gè)主機(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ù)時(shí),在日志每行的開(kāi)始會(huì)添加”%t [%p]“;
            可以使用的日志格式定義符如下所示:
            %o —操作類型:”send” 或 “recv”
            %h —遠(yuǎn)程主機(jī)名
            %a —遠(yuǎn)程IP地址
            %m —模塊名
            %u —證的用戶名(匿名時(shí)是 null)
            %f —文件名
            %l —文件長(zhǎng)度字符數(shù)
            %p —該次 rsync 會(huì)話的 PID
            %P —模塊路徑
            %t —當(dāng)前時(shí)間
            %b —實(shí)際傳輸?shù)淖止?jié)數(shù)
            %c —當(dāng)發(fā)送文件時(shí),記錄該文件的校驗(yàn)碼

          3、服務(wù)端配置

          # vim /etc/rsyncd.conf --為 rsyncd 服務(wù)編輯配置文件,默認(rèn)沒(méi)有,需自己編輯
          • uid = root —rsync運(yùn)行權(quán)限為root

          • gid = root —rsync運(yùn)行權(quán)限為root

          • use chroot = no —是否讓進(jìn)程離開(kāi)工作目錄

          • max connections = 5 —最大并發(fā)連接數(shù),0為不限制

          • timeout = 600 —超時(shí)時(shí)間

          • 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 —忽略一些無(wú)關(guān)的I/O錯(cuò)誤
            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 —指定存放“用戶名:密碼”格式的文件

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

          四、測(cè)試

          1、客戶端

          環(huán)境:192.168.22.12

          # yum -y install rsync# mkdir /data/test

          2、小試參數(shù)

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

          -a —參數(shù),相當(dāng)于-rlptgoD,
          -r —是遞歸
          -l —是鏈接文件,意思是拷貝鏈接文件
          -i —列出 rsync 服務(wù)器中的文件
          -p —表示保持文件原有權(quán)限
          -t —保持文件原有時(shí)間
          -g —保持文件原有用戶組
          -o —保持文件原有屬主
          -D —相當(dāng)于塊設(shè)備文件
          -z —傳輸時(shí)壓縮
          -P —傳輸進(jìn)度
          -v —傳輸時(shí)的進(jìn)度等信息,和-P有點(diǎn)關(guān)系

          # rsync -avzP --delete [email protected]::web1 /data/test/ --讓客戶端與服務(wù)器保持完全一致, --delete# rsync -avzP --delete /data/test/ [email protected]::web1 --上傳客戶端文件至服務(wù)端# rsync -avzP --delete /data/test/ [email protected]::web1/george --上傳客戶端文件至服務(wù)端的 george 目錄# rsync -ir --password-file=/tmp/rsync.password [email protected]::web1 --遞歸列出服務(wù)端 web1 模塊的文件# rsync -avzP --exclude="*3*" --password-file=/tmp/rsync.password [email protected]::web1 /data/test/ --同步除了路徑以及文件名中包含 “3” *的所有文件

          3、通過(guò)密碼文件同步

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

          4、客戶端自動(dòng)同步

          # crontab -e

          10 0 * rsync -avzP —delete —password-file=/tmp/rsync.password [email protected]::web1 /data/test/

          # crontab -l

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

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

          1、inotify-tools

          • 是為linux下 inotify文件監(jiān)控工具提供的一套c的開(kāi)發(fā)接口庫(kù)函數(shù),同時(shí)還提供了一系列的命令行工具,這些工具可以用來(lái)監(jiān)控文件系統(tǒng)的事件

          • inotify-tools是用c編寫的,除了要求內(nèi)核支持 inotify 外,不依賴于其他

          • inotify-tools提供兩種工具:一是inotifywait,它是用來(lái)監(jiān)控文件或目錄的變化,二是inotifywatch,它是用來(lái)統(tǒng)計(jì)文件系統(tǒng)訪問(wèn)的次數(shù)

          2、安裝inotify-tools

          下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

          # 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)境變量

          # vim /root/.bash_profile

          export PATH=/usr/local/inotify/bin/:$PATH

          # source /root/.bash_profile# echo '/usr/local/inotify/lib' >> /etc/ld.so.conf --加載庫(kù)文件# ldconfig# ln -s /usr/local/inotify/include /usr/include/inotify

          4、常用參數(shù)

          • -m —始終保持監(jiān)聽(tīng)狀態(tài),默認(rèn)觸發(fā)事件即退出

          • -r —遞歸查詢目錄

          • -q —打印出監(jiān)控事件

          • -e —定義監(jiān)控的事件,可用參數(shù):

          • access —訪問(wèn)文件

          • modify —修改文件

          • attrib —屬性變更

          • open —打開(kāi)文件

          • delete —?jiǎng)h除文件

          • create —新建文件

          • move —文件移動(dòng)

          • —fromfile —從文件讀取需要監(jiān)視的文件或者排除的文件,一個(gè)文件一行,排除的文件以@開(kāi)頭

          • —timefmt —時(shí)間格式

          • —format —輸出格式

          • —exclude —正則匹配需要排除的文件,大小寫敏感

          • —excludei —正則匹配需要排除的文件,忽略大小寫

          • %y%m%d %H%M —年月日時(shí)鐘

          • %T%w%f%e —時(shí)間路徑文件名狀態(tài)

          5、測(cè)試一

          檢測(cè)源目錄中是否有如下動(dòng)作:modify,create,move,delete,attrib;

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

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

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

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

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

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

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

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

          來(lái)源:https://www.cnblogs.com/george-guo/p/7718515.html

          10T 技術(shù)資源大放送!包括但不限于:Linux、虛擬化、容器、云計(jì)算、網(wǎng)絡(luò)、Python、Go 等。在開(kāi)源Linux公眾號(hào)內(nèi)回復(fù)「10T」,即可免費(fèi)獲取!

          shell編程100例(附PDF下載)
          IPv6技術(shù)白皮書(附PDF下載)
          Linux主流發(fā)行版本配置IP總結(jié)(Ubuntu、CentOS、Redhat、Suse)
          批量安裝Windows系統(tǒng)
          無(wú)人值守批量安裝服務(wù)器
          運(yùn)維必備的《網(wǎng)絡(luò)端口大全》,看這一份就夠了。
          收藏:服務(wù)器和存儲(chǔ)知識(shí)入門
          什么叫SSH?原理詳解,看這一篇就夠了!
          Nginx面試40問(wèn)(收藏吃灰)
          20 個(gè) Linux 服務(wù)器性能調(diào)優(yōu)技巧
          超詳細(xì)!一文帶你了解LVS四層負(fù)載均衡企業(yè)級(jí)實(shí)踐!
          收藏 | Linux系統(tǒng)日志位置及包含的日志內(nèi)容介紹
          100 道 Linux 常見(jiàn)面試題,建議收藏,慢慢讀~
          服務(wù)器12種基本故障+排查方法
          IT運(yùn)維管理常用工具大全,讓你成為真正的高手
          什么是QoS?

          Linux學(xué)習(xí)指南

          有收獲,點(diǎn)個(gè)在看 

          瀏覽 83
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  青青草免费在线看视频 | 美女Aa级 | 天天操夜夜操豆花视频 | 成人毛片18女人毛片真水 | 成年男女免费视频网站无毒 |