<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 備份工具rsync rsync是Linux系統下最具代表性的數據備份工具,它具有以下特點: - 不僅可以遠程同步,還可以在本地進行同步。 - 增量更新,減少同步的流量。 - 可以在windows和mac下使用,能夠做到跨平臺使用。 - 可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。 - 比較安全,可以使用scp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。 ### rsync的命令格式 `rsync`命令的格式是:`rsync [OPTION]... SRC DEST`;其中,SRC和DEST既可以取本地目錄/文件,也可以取遠程目錄/文件,如`rsync [OPTION]... SRC [USER@]HOST:DEST`或`rsync [OPTION]... SRC [USER@]HOST::DEST`。 SRC可以由多個文件組成,以此來實現一次性指定同步多個文件:`rsync [OPTION]... SRC1 SRC2 SRC3 DEST`。 ### rsync的常用參數 - -a:歸檔模式,表示以遞歸方式傳輸文件,并保持所有屬性,它等同于`-rlptgoD`,這是最常用的參數。另外,為靈活起見,`-a`后可跟一個`--no-OPTION`來表示關閉`-rlptgoD`中的任意一個參數,比如`-a--no-l`等同于`-rptgoD`。 - -r:表示以遞歸模式處理子目錄。 - -v:表示打印同步的匯總結果信息。 - -l:表示保留軟連接。 - -L:表示如果SRC中含有軟連接文件,則取其指向的目標文件同步到DEST(當然軟連接就不會同步過去了)。 - --delete:表示刪除DST中SRC沒有的文件。 - --exclude=PATTERN:表示指定排除不需要傳輸的文件。 - --progress:表示動態打印rsync同步過程中的狀態以及最后的匯總結果信息(即包含了`-V`的效果)。 - -z:表示將會在同步傳輸過程中壓縮。 ### rsync遠程同步 雖然rsync可以在本地的兩個目錄中進行同步,但其實rsync更常見的應用場景應該是在兩臺機器中進行遠程同步(不論是通過局域網還是互聯網)。 #### 通過ssh的方式進行遠程同步 其命令格式(注意是只有一個**冒號**)如下: - `rsync [OPTION]... SRC [USER@]HOST:DEST` - `rsync [OPTION]... [USER@]HOST:SRC DEST` 在輸入命令后,接下來的事情其實跟openssh的反饋十分類似:如沒有通過密鑰認證,則需要輸入密碼進行認證。認證通過后,接下來的rsync執行結果就跟在本地同步操作的沒有兩樣了。 #### 通過rsync后臺服務(rsyncd)的方式進行遠程同步 這種方式的原理是在遠程服務器上建立rsync服務器,并將本機看成是rsync客戶端,這樣我們就可以利用rsync客戶端遠程連接(via TCP)rsync服務器進行遠程同步的操作了。 下面我們分**服務器端**和**客戶端**兩個部分來解釋通過rsync后臺服務(rsyncd)的方式進行遠程同步的整個過程。 ##### 服務器端 ###### rsync配置文件 啟動rsync后臺服務rsyncd前,我們需要先準備一份rsyncd的配置文件——`/etc/rsyncd.conf`,該配置可控制rsync的權限、可操作范圍、日志、可用模塊等方方面面的內容。 配置文件由兩個部分組成:全局變量和模塊變量,但你也可以把模塊變量寫在全局變量里,作為模塊變量的一份默認值。 下面列出一些常用的變量,具體的變量列表請查詢[官方文檔](https://download.samba.org/pub/rsync/rsyncd.conf.html)。 - 全局變量 - pid file:指定pid文件路徑(記錄rsyncd的進程ID) 。 - port:指定監聽哪個端口,默認是873端口。 - address:指定啟動服務的IP,假如你的服務器有多個IP,那么可以指定其中的一個IP來啟動rsyncd服務;如果不指定則默認在全部IP上啟動 - 模塊變量 - path:指定該模塊的根目錄,客戶端在訪問該模塊時不能超出該根目錄的層級范圍。另外,此變量可以達成某些騷操作,比如`path=/home/%RSYNC_USER_NAME%`,則當連接服務器端的rsync用戶名為**test**時,該模塊的根目錄就自動設置為`/home/test`,但為了安全起見,不推薦這么干。 - use chroot:值取**true**或**false**,表示在傳輸文件前,首先`chroot`到**path參數**所指定的目錄下,這樣做可以獲得額外的安全防護;但是缺點是需要以root權限來啟動rsyncd,并且,如果同步的內容里有軟連接指向模塊根目錄以外的文件,則不能實現同步。 - max connections:指定該模塊最大的連接數,如果有超出此最大連接數的客戶端試圖連接,則會被告知**try later**;該值默認為0,即沒有限制最大連接數。 - log file:指定日志文件的路徑,默認使用**syslog**。該日志文件意義非常重大,尤其是在架構rsync服務初期,可能會遇到相當多的問題,需要通過查看日志來定位問題所在。同時,即使為模塊設置了**log file**,還是建議給全局設置一份,因為有些權限校驗的異常,還是會被記錄到全局日志文件里的。 - read only:值取**true**或**false**,決定客戶端是否能往服務器端上傳/刪除文件,默認為**false**。 - write only:值取**true**或**false**,決定客戶端是否能從服務器端下載文件。 - list:值取**true**或**false**,決定客戶端查詢服務器端所有可用模塊時是否顯示,默認顯示。 - uid/gid:決定傳輸文件時以哪個身份(用戶/組)進行傳輸,這關系到rsyncd是否有相應的文件系統權限來讀取或修改文件。如果不設置此參數,則據此邏輯處理:如果rsyncd由超級用戶啟動,則以**nobody**這個系統用戶的身份進行傳輸;否則,按啟動rsyncd的用戶身份進行傳輸。因此,如果想以root/root身份進行傳輸,則必須設置此參數為`uid=root;gid=root`。 - filter/include from/include/exclude from/exclude:表示同步文件的白名單及黑名單;雖然在rsync客戶端使用的`rsync`命令里也有對應的可選參數,但在服務器端設置的話,更具有強制性和隱蔽性(在客戶端訪問的時候,只會反饋"不存在",而非"不允許訪問")。 - auth users:表示身份驗證的規則,不設置則表示所有rsync用戶都可訪問。指定對象的方式有兩種:1. 指定用戶名,此用戶名并不一定要真實存在于Linux系統中;2. 指定用戶組名(并在用戶組名前加上`@`以區分開用戶名),這個方式是依托于Linux系統的,因此客戶端連接使用的用戶名以及此處指定的用戶組都必須是真實存在于Linux系統中。多個對象可用空格或逗號進行分隔(推薦使用逗號,因為如果使用空格來分隔,那么在用戶名/組名中帶有空格的情況下,會造成混淆)。另外可以使用參數`deny`/`ro`(read only)/`rw`(read write)來具體控制某個用戶或某個組的訪問權限,如:`auth users = , joe:deny, @Some Group:deny, admin:rw, @RO Group:ro`。 - secrets file:指定一個聲明`用戶名:用戶密碼`或`@用戶組名:用戶組公共密碼`的文件,該參數是`auth users`參數的配套,僅在已設置`auth users`參數的情況下生效,且沒有默認值。另外,即使你在`auth users`參數中指定了用戶組作為對象,也不一定要在本文件中聲明`@用戶組名:用戶組公共密碼`,完全可以羅列出用戶組中所有用戶的`用戶名:用戶密碼`來滿足需求。 - strict modes:值取**true**或**false**,且默認值為**true**。如取**true**值,則`secrits file`參數所對應的文件,其文件系統權限必須設定為600。 - hosts allow / hosts deny:表示rsync客戶端的白名單及黑名單,可根據IP或IP段進行設置,且支持以空格為分隔符輸入多個對象。 這里給出一份參考的rsyncd配置文件: ``` port=873 log file=/var/log/rsync.log pid file=/var/run/rsyncd.pid [test] path=/root/rsync/test use chroot=false max connections=0 # no limitation read only=false list=true uid=root gid=root auth users=rsyncuser secrets file=/etc/rsyncd.passwd ``` ###### 啟動rsyncd 啟動方式有以下兩種: - 獨立的服務:`rsync --daemon --config=/etc/rsyncd.conf`。 - 由**inetd**在監聽到請求時再行啟動,這里不作闡述。 ###### rsyncd自啟 為保證rsyncd的可用性(比如在系統異常重啟后依然可用),需要把rsyncd設置為開機自啟,具體方法請查詢`chkconfig`或`systemd`。 ##### 客戶端 ##### 命令格式 在這種方式下的命令格式稍有區別:`rsync [OPTION]... RSYNCUSER@HOST::[MODULE[/SRC]] DEST`。多個對象的命令也有所區別:`rsync [OPTION]... RSYNCUSER@HOST::[MODULE1[/SRC1]] ::[MODULE2[/SRC2]] ::[MODULE3[/SRC3]] DEST` ##### 關于用戶身份驗證 若rsyncd設置了`auth users`,那么客戶端在連接的時候就需要提供相應rsync用戶的密碼了: - 直接用`rsync [OPTION]... RSYNCUSER@HOST::[MODULE[/SRC]] DEST`命令,接下來會提示需要輸入密碼。 - 指定存放rsync用戶密碼的文件路徑:`rsync -avL --password-file=/etc/rsyncd.passwd RSYNCUSER@HOST::[MODULE[/SRC]],此密碼文件中,就只放密碼: ``` # cat /etc/rsyncd.passwd test123 ``` ### rsync進階運用 #### rsync配合inotify實現文件目錄實時同步 需求假設是這樣的: - 服務器A隨著程序的執行,不斷產生新的日志。 - 服務器B和C需要把服務器A上的日志拉取過來,并需要保證實時性。 如果我們用crond輪詢來啟動rsync發起同步,不僅實時性得不到保證,另外也很可能造成資源的浪費。 那么,就有了下面這套方案: - 在服務器B和C上啟動rsyncd。 - 在服務器A上利用inotify監控日志的產生,每逢有新日志產生inotify都會調用我們寫好的shell腳本,這樣我們就可以在腳本中,把服務器A作為rsync客戶端,遠程連接服務器B和C,達到把服務器A上新產生的日志推送到服務器B和C上的目的。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看