日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rsync的原理——转载

發(fā)布時(shí)間:2025/3/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rsync的原理——转载 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? 前段日子在網(wǎng)上找rsync daemon的filter等過濾規(guī)則的詳解,怎么也找不到,哥一怒之下,決定自己動(dòng)手翻譯,于是有了本文…
? ? 本文內(nèi)容翻譯自rsync的官方文檔:http://rsync.samba.org/ftp/rsync/rsync.html,以及http://rsync.samba.org/ftp/rsync/rsyncd.conf.html,非完整的全文翻譯,并且按照我的需要,對(duì)原文的相關(guān)章節(jié)或條目進(jìn)行了適當(dāng)?shù)闹匦戮幣拧9俜轿臋n發(fā)布日期:26 Mar 2011。

? ? rsync是Unix/Linux系統(tǒng)中一款優(yōu)秀高效的鏡像同步和遠(yuǎn)程數(shù)據(jù)備份工具,它可以把本地文件拷貝到遠(yuǎn)程主機(jī),或從遠(yuǎn)程主機(jī)拷貝文件到本地,也可以在本地的兩個(gè)目錄之間進(jìn)行拷貝,但不支持兩個(gè)遠(yuǎn)程主機(jī)之間的互相拷貝。


? ??關(guān)于rsync的工作方式:
? ? rsync連接遠(yuǎn)程主機(jī)進(jìn)行同步或備份時(shí)有兩種途徑:使用遠(yuǎn)程shell程序(如ssh或rsh)進(jìn)行連接,或使用TCP直接連接rsync daemon。
? ? 當(dāng)源路徑或目的路徑的主機(jī)名后面包含一個(gè)冒號(hào)分隔符時(shí),rsync使用遠(yuǎn)程shell傳輸;當(dāng)源路徑或目的路徑的主機(jī)名后面包含兩個(gè)冒號(hào),或使用rsync://URL時(shí),rsync使用TCP直接連接rsync daemon。
? ? 特別的,如果只指定了源路徑,而沒有指定目的路徑,rsync將會(huì)顯示源路徑中的文件列表,類似于使用命令ls -l。

 rsync把本地端看作client,把遠(yuǎn)程端當(dāng)成server。注意:不要把server與rsync daemon混淆!daemon一定是server,而server卻不一定是daemon,也可能是遠(yuǎn)程shell的衍生進(jìn)程。
? ? 至于什么是daemon,以及遠(yuǎn)程shell衍生daemon,下文會(huì)有說明。


? ??關(guān)于rsync的安裝:
? ? rsync安裝方式是最常規(guī)的./configure && make && make install,只是要注意:源機(jī)器和目標(biāo)機(jī)器都要安裝。


? ??關(guān)于rsync的啟動(dòng):
? ? 前面說過rsync在進(jìn)行同步或備份時(shí),有兩種途經(jīng)連接遠(yuǎn)程主機(jī):使用遠(yuǎn)程shell,或使用TCP連接遠(yuǎn)程daemon,可以把它們分別稱之為shell模式和daemon模式。只有daemon模式才有啟動(dòng)rsync一說。
? ? 如果使用shell模式,rsync安裝完成后就可以直接使用了,無所謂啟動(dòng),也不需要任何配置文件。遠(yuǎn)程傳輸時(shí)一般使用ssh作為傳輸工具,當(dāng)然,也可以使用參數(shù)-e來指定一個(gè)遠(yuǎn)程shell。
? ? 如果使用daemon模式,就無需遠(yuǎn)程shell了,但必須在一臺(tái)機(jī)器上啟動(dòng)rsync daemon,默認(rèn)端口873.

? ? 你可以經(jīng)由inetd啟動(dòng)daemon,或者作為一個(gè)獨(dú)立進(jìn)程啟動(dòng)daemon,或者由rsync client通過遠(yuǎn)程shell啟動(dòng)daemon。
? ? ?1)如果把它作為一個(gè)獨(dú)立進(jìn)程來啟動(dòng),只需要運(yùn)行命令:rsync --daemon即可;
? ? ?2)如果通過inetd來運(yùn)行,要修改兩個(gè)文件:/etc/services和/etc/inetd.conf:
? ? ? 在/etc/services文件中添加如下行:rsync 873/tcp
? ? ? 在/etc/inetd.conf中添加:rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
? 注意把/usr/bin/rsync換成你的rsync安裝目錄!然后重啟inetd服務(wù),使配置文件生效。

? ? 關(guān)于由client通過遠(yuǎn)程shell啟動(dòng)daemon,官方文檔中有一個(gè)條目:USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION。
? ? 條目中說,rsync支持這種用法:使用遠(yuǎn)程shell連接host,然后衍生出一個(gè)single-use “daemon”服務(wù)器,來讀取遠(yuǎn)程用戶家目錄下的配置文件。從用戶的角度看,通過遠(yuǎn)程shell連接而啟用的daemon傳輸,它的命令行語法跟正常的rsync daemon傳輸是一樣的,唯一不同的是,你必須在命令中使用--rsh=COMMAND來明確遠(yuǎn)程shell程序。如下例:
? ? rsync -av --rsh=ssh host::module /dest
? 譯者注:雖然官方文檔中說這種用法在某些情況下很有用,但我覺得很別扭。

? ? 當(dāng)rsync作為daemon運(yùn)行時(shí),它需要一個(gè)用戶身份。如果你希望啟用chroot,則必須以root的身份來運(yùn)行daemon,監(jiān)聽端口(1024以下,默認(rèn)873),或設(shè)定文件屬主;如果不啟用chroot,也可以不使用root用戶來運(yùn)行daemon,但該用戶必須對(duì)相應(yīng)的模塊擁有讀寫數(shù)據(jù)、日志和lock file的權(quán)限。
? ? 當(dāng)rsync以daemon模式運(yùn)行時(shí),它還需要一個(gè)配置文件:rsyncd.conf。修改這個(gè)配置后不必重啟rsync daemon,因?yàn)槊恳淮蔚腸lient連接都會(huì)去重新讀取該文件。
? ? 譯者注:關(guān)于配置文件rsyncd.conf的設(shè)定,后面會(huì)有詳細(xì)的參數(shù)解釋。

? ??關(guān)于rsync的兩種模式:
? ? 該部分額外的內(nèi)容來自IBM官方網(wǎng)站上的一篇文章。該文章把rsync的運(yùn)行模式擴(kuò)展成了四種,但我認(rèn)為rsync官方文檔的兩種模式的劃分更加合理一些。
? ? 所謂rsync daemon,就是在一臺(tái)機(jī)器上永久運(yùn)行的rsync進(jìn)程。在任何一臺(tái)安裝rsync的機(jī)器上運(yùn)行rsync --daemon,則這臺(tái)機(jī)器上運(yùn)行的rsync就是rsync daemon。我們可以把文件發(fā)送給daemon,也可以向daemon請(qǐng)求文件。
? ? daemon模式非常適合創(chuàng)建中心備份服務(wù)器,或項(xiàng)目存儲(chǔ)庫。
? ? 兩種模式的區(qū)別前面已經(jīng)說過,shell模式在源路徑和目的路徑中使用一個(gè)冒號(hào),而daemon模式使用兩個(gè)冒號(hào)。

? ??關(guān)于rsync命令的語法:

本地拷貝:????rsync?[選項(xiàng)]?SRC…?DEST,在本地進(jìn)行復(fù)制操作?shell模式:????rsync?[選項(xiàng)]?[user@]Host:SRC…?[DEST],拉動(dòng)作,從遠(yuǎn)程主機(jī)拉文件到本地????rsync?[選項(xiàng)]?SRC…?[user@]Host:DEST,推動(dòng)作,把本地文件推送到遠(yuǎn)程主機(jī)?daemon模式:????rsync?[選項(xiàng)]?[user@]Host::SRC…?[DEST],拉動(dòng)作????rsync?[選項(xiàng)]?rsync://[user@]Host?[:port]/SRC…?[DEST],仍然是拉動(dòng)作????rsync?[選項(xiàng)]?SRC...?[user@]Host::DEST,推動(dòng)作????rsync?[選項(xiàng)]?SRC...rsync://[user@]Host?[:port]/DEST,仍然是推動(dòng)作

? ? 官方文檔的舉例:
? ? 1)rsync -t *.c foo:src/
? ? ? ? 把當(dāng)前目錄中所有以.c結(jié)尾的文件傳輸?shù)綑C(jī)器名為foo的src目錄中。如果某些文件已經(jīng)在遠(yuǎn)程主機(jī)中存在,則跳過該文件。
? ? 2)rsync -avz foo:src/bar /data/tmp
? ? ? ? ?從機(jī)器名為foo的遠(yuǎn)程主機(jī)上把/src/bar目錄及其下所有文件傳輸?shù)奖镜貦C(jī)器的/data/tmp目錄中。注意:源路徑src/bar的最后沒有斜杠”/”!
? ? ? ? 源路徑的最后是否有斜杠有不同的含義:有斜杠,只是復(fù)制目錄中的文件;沒有斜杠的話,不但要復(fù)制目錄中的文件,還要復(fù)制目錄本身!
? ? ? ? 目的路徑的最后有沒有斜杠,對(duì)傳輸沒有影響。
? ? 3)rsync -av host:file1 :file2 host:file{3,4} /dest/
? ? ? ? ?rsync -av host::mod/file{1,2} host::mod/file3 /dest/
? ? ? ? ?rsync -av host::mod/file1 ::mod/file{3,4}
? ? ? ? 這個(gè)例子是rsync更高級(jí)一點(diǎn)的用法,使用rsync同時(shí)傳輸多個(gè)指定文件。
? ? rsync可以一次傳輸多個(gè)指定的文件,方法是添加多個(gè)遠(yuǎn)程主機(jī)參數(shù),或忽略主機(jī)名。如上例。

? ??關(guān)于rsync命令中的選項(xiàng):
? ? 上面例子中提到了一些選項(xiàng),rsync的選項(xiàng)有很多,請(qǐng)參考官方文檔。常用的選項(xiàng)如下:

-a:歸檔模式,保持文件的所有屬性,相當(dāng)于-rlptgoD?-r:遞歸模式?-e:指定一個(gè)遠(yuǎn)程shell?-z:文件傳輸時(shí)進(jìn)行壓縮處理?--delete:鏡像中常用,刪除DEST中那些SRC中不存在的文件

 daemon也有一些常用選項(xiàng),下面會(huì)有介紹。

? ??client如何連接rsync daemon:
? ? 上面第3個(gè)例子已經(jīng)給出了client連接daemon的語法示例。但是官方文檔又把本條目單獨(dú)列了出來,提醒我們?cè)谶B接rsync daemon時(shí)要注意的幾點(diǎn):
? ? 1) daemon模式中的源路徑,即SRC,實(shí)際上是模塊的名稱
? ? 2) 如果未在雙冒號(hào)::后面指定源路徑,則rsync會(huì)列出daemon上所有可能的模塊
? ? 3) 不要使用--rsh(-e)參數(shù)
? ? 4) 有些模塊可能需要密碼認(rèn)證,你可以使用--password-file選項(xiàng),來指定密碼文件

? ??啟用一個(gè)rsync daemon來接受client的連接:
? ??除--daemon外,rsync daemon啟動(dòng)時(shí)還有其它一些常用選項(xiàng):
? ? --daemon:
? ? ? 使rsync作為一個(gè)daemon運(yùn)行。daemon有兩種啟動(dòng)方式,前面已經(jīng)說過。對(duì)client發(fā)出的每一次連接請(qǐng)求,daemon會(huì)讀取配置文件rsyncd.conf,然后做出相應(yīng)的回應(yīng)。
? ? --bwlimit=KBPS:
? ? ? 指定daemon每秒傳輸?shù)淖畲笄ё止?jié)。client在請(qǐng)求連接時(shí)也可以指定一個(gè)--bwlimit值,但該值不能大于daemon端的設(shè)置。
? ? --config=FILE:
? ? ? 指定daemon的配置文件。只有當(dāng)rsync以daemon模式運(yùn)行的時(shí)候,該選項(xiàng)才有效。默認(rèn)的配置文件為/etc/rsyncd.conf,除非daemon是通過遠(yuǎn)程shell運(yùn)行,并且遠(yuǎn)程user非超級(jí)用戶,這種情況下,配置文件rsyncd.conf默認(rèn)存在于當(dāng)前目錄(在$HOME目錄中比較典型)。關(guān)于通過遠(yuǎn)程shell啟用daemon,見上文。
? ? --port=PORT:
? ? ? 指定daemon監(jiān)聽的端口。
? ? --log-file=FILE:
? ? ? 該選項(xiàng)告訴daemon不要使用rsyncd.conf中指定的log文件,而要使用此處指定的文件。此選項(xiàng)很少用到。

?

原文地址:

http://share.blog.51cto.com/278008/560742

轉(zhuǎn)載于:https://blog.51cto.com/caduke/1654507

總結(jié)

以上是生活随笔為你收集整理的rsync的原理——转载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。