久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何理解Linux 遠(yuǎn)程數(shù)據(jù)同步工具

共計(jì) 8197 個(gè)字符,預(yù)計(jì)需要花費(fèi) 21 分鐘才能閱讀完成。

如何理解 Linux 遠(yuǎn)程數(shù)據(jù)同步工具,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

一、簡(jiǎn)介

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

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

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

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

2 原理

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

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

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

3 特點(diǎn)

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

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

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

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

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

支持匿名傳輸

二、ssh 模式

1 本地間同步

 環(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è)目錄同步過去  # rm -rf src/d -- 刪除一個(gè)文件  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

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

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

mdash;172.16.22.12

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

mdash;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)改為 no  disable = 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 mdash; 在獨(dú)立運(yùn)行時(shí),用于指定的服務(wù)器運(yùn)行的 IP 地址; 由 xinetd 運(yùn)行時(shí)將忽略此參數(shù),使用命令行上的 ndash;address   選項(xiàng)替代。默認(rèn)本地所有 IP

port mdash; 指定 rsync 守護(hù)進(jìn)程監(jiān)聽的端口號(hào)。由 xinetd 運(yùn)行時(shí)將忽略此參數(shù),使用命令行上的 ndash;port 選項(xiàng)替代。默認(rèn) 873

motd file mdash; 指定一個(gè)消息文件,當(dāng)客戶連接服務(wù)器時(shí)該文件的內(nèi)容顯示給客戶

pid file mdash;rsync 的守護(hù)進(jìn)程將其 PID 寫入指定的文件

log file mdash; 指定 rsync 守護(hù)進(jìn)程的日志文件,而不將日志發(fā)送給 syslog

syslog facility mdash; 指定 rsync 發(fā)送日志消息給 syslog 時(shí)的消息級(jí)別

socket options mdash; 指定自定義 TCP 選項(xiàng)

lockfile mdash; 指定 rsync 的鎖文件存放路徑

timeout = 600 mdash; 超時(shí)時(shí)間

模塊參數(shù)

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

基本模塊參數(shù)

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

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

模塊控制參數(shù)

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

uid = mdash; 指定該模塊以指定的 UID 傳輸文件; 默認(rèn) nobody

gid = mdash; 指定該模塊以指定的 GID 傳輸文件; 默認(rèn) nobody

max connections mdash;*** 并發(fā)連接數(shù),0 為不限制

lock file mdash; 指定支持 max connections 參數(shù)的鎖文件。默認(rèn) /var/run/rsyncd.lock

list mdash; 指定當(dāng)客戶請(qǐng)求列出可以使用的模塊列表時(shí),該模塊是否應(yīng)該被列出。默認(rèn)為 true,顯示

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

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

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

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

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

dont compress   mdash; 用來指定那些在傳輸之前不進(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 mdash; 指定多個(gè)由空格隔開的多個(gè)文件或目錄 (相對(duì)路徑),并將其添加到 exclude 列表中。這等同于在客戶端命令中使用 ndash;exclude   來指定模式

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

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

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

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

auth users mdash; 指定由空格或逗號(hào)分隔的用戶名列表,只有這些用戶才允許連接該模塊 (和系統(tǒng)用戶沒有任何關(guān)系)。用戶名和口令以明文方式存放在  secrets file 參數(shù)指定的文件中。默認(rèn)為匿名方式

secrets file mdash; 指定一個(gè) rsync 認(rèn)證口令文件。只有在 auth users 被定義時(shí),該文件才起作用。文件權(quán)限必須是 600

strict modes mdash; 指定是否監(jiān)測(cè)口令文件的權(quán)限。為 true 則口令文件只能被 rsync   服務(wù)器運(yùn)行身份的用戶訪問,其他任何用戶不可以訪問該文件。默認(rèn)為 true

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

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

hosts deny mdash; 用一個(gè)主機(jī)列表指定哪些主機(jī)客戶不允許連接該模塊

模塊日志參數(shù)

transfer logging mdash; 使 rsync 服務(wù)器將傳輸操作記錄到傳輸日志文件。默認(rèn)值為 false

log format mdash; 指定傳輸日志文件的字段。默認(rèn)為:”%o %h [%a] %m (%u) %f %l”

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

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

%o mdash; 操作類型:”send”或“recv”

%h mdash; 遠(yuǎn)程主機(jī)名

%a mdash; 遠(yuǎn)程 IP 地址

%m mdash; 模塊名

%u mdash; 證的用戶名 (匿名時(shí)是)

%f mdash; 文件名

%l mdash; 文件長(zhǎng)度字符數(shù)

%p mdash; 該次 rsync 會(huì)話的 PID

%P mdash; 模塊路徑

%t mdash; 當(dāng)前時(shí)間

%b mdash; 實(shí)際傳輸?shù)淖止?jié)數(shù)

%c mdash; 當(dāng)發(fā)送文件時(shí),記錄該文件的校驗(yàn)碼

3、服務(wù)端配置

# vim /etc/rsyncd.conf -- 為  rsyncd  服務(wù)編輯配置文件,默認(rèn)沒有,需自己編輯 

uid = root mdash;rsync 運(yùn)行權(quán)限為 root

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

use chroot = no mdash; 是否讓進(jìn)程離開工作目錄

max connections = 5 mdash;*** 并發(fā)連接數(shù),0 為不限制

timeout = 600 mdash; 超時(shí)時(shí)間

pid file = /var/run/rsyncd.pid mdash; 指定 rsync 的 pid 存放路徑

lockfile = /var/run/rsyncd.lock mdash; 指定 rsync 的鎖文件存放路徑

log file = /var/log/rsyncd.log mdash; 指定 rsync 的日志存放路徑

[web1] mdash; 模塊名稱

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

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

read only = no mdash; 客戶端可以上傳

write only = no mdash; 客戶端可以下載

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

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

list = yes

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

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

# 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 web@192.168.22.11::web1 /data/test/ – 輸入密碼 123; 將服務(wù)器 web1   模塊里的文件同步至 /data/test,參數(shù)說明:

-a mdash; 參數(shù),相當(dāng)于 -rlptgoD,

-r mdash; 是遞歸

-l mdash; 是鏈接文件,意思是拷貝鏈接文件

-i mdash; 列出 rsync 服務(wù)器中的文件

-p mdash; 表示保持文件原有權(quán)限

-t mdash; 保持文件原有時(shí)間

-g mdash; 保持文件原有用戶組

-o mdash; 保持文件原有屬主

-D mdash; 相當(dāng)于塊設(shè)備文件

-z mdash; 傳輸時(shí)壓縮

-P mdash; 傳輸進(jìn)度

-v mdash; 傳輸時(shí)的進(jìn)度等信息,和 - P 有點(diǎn)關(guān)系

# 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、通過密碼文件同步

# 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、客戶端自動(dòng)同步

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

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

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

1、inotify-tools

是為 linux 下 inotify 文件監(jiān)控工具提供的一套 c 的開發(fā)接口庫(kù)函數(shù),同時(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

# yum install  ndash;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 mdash; 始終保持監(jiān)聽狀態(tài),默認(rèn)觸發(fā)事件即退出

-r mdash; 遞歸查詢目錄

-q mdash; 打印出監(jiān)控事件

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

access mdash; 訪問文件

modify mdash; 修改文件

attrib mdash; 屬性變更

open mdash; 打開文件

delete mdash; 刪除文件

create mdash; 新建文件

move mdash; 文件移動(dòng)

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

mdash;timefmt mdash; 時(shí)間格式

mdash;format mdash; 輸出格式

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

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

%y%m%d %H%M mdash; 年月日時(shí)鐘

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

5、測(cè)試一

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

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

方式為 sshsrc: 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 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ī)上也寫一個(gè)這樣的腳本:

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

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

關(guān)于如何理解 Linux 遠(yuǎn)程數(shù)據(jù)同步工具問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注丸趣 TV 行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-25發(fā)表,共計(jì)8197字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 辽阳市| 新余市| 韩城市| 北碚区| 扶余县| 新建县| 安乡县| 宜城市| 攀枝花市| 华容县| 昭通市| 睢宁县| 资源县| 东城区| 合山市| 平陆县| 茌平县| 斗六市| 和平县| 巴中市| 阳原县| 阜南县| 麻城市| 仁化县| 宁强县| 新闻| 青州市| 天等县| 禹州市| 修文县| 无棣县| 嘉祥县| 大连市| 柳河县| 东安县| 府谷县| 历史| 白朗县| 灵台县| 隆安县| 武安市|