Linux Enterprise Cluster NOtes — Ch4 同步:ssh和rsync

來源:互聯網
上載者:User
Chapter 4: Synchronizing Servers with RYSNC and SSH

1. rsync. 本書是一本描述HA和load balance的書,這一章主要是在描述如何同步兩台伺服器上的檔案和內容。因為在做HA的時候,兩台伺服器上的內容必須完全一樣,這樣,當一台掛掉之 後,另外一台才能馬上接替工作。當然了,如果兩台伺服器無盤,共用一個儲存的話,就沒有這個必要了。如果不是,那麼就要做這些事情。

2. 本書的組織上,首先是講HA,然後講load balance。先描述了HA之後,就可以將load balance server做一個雙機HA,這樣再講load balance就科學一些。

3. 使用rsync可以同步兩台機器,相比cp這些工具,rsync提供了這樣一些增強feature:
Examines the source files and only copies blocks of data that change.
(Optionally) works with the secure shell to encrypt data before it passes over the network.
Allows you to compress the data before sending it over the network.
Will automatically remove files on the destination system when they are removed from the source system.
Allows you to throttle the data transfer speed for WAN connections.
Has the ability to copy device files

rsync可以將一台機器上的資料push給另外一台;也可以用pull的方式從一台伺服器上將資料拿到本機上來。Unison比rsync更強大一些。

4. OK,然後來看如何使用rsync和ssh吧。將rsync和ssh捆綁,能增加rsync的安全性,因為有可能被同步的資料有/etc/passwd, 用ssh可以保證這些資料的安全。情景為兩台伺服器,一台稱為primary server(這台機器上儲存了要同步的資料,資料只能在這台機器上修改,他是ssh client,即primary server發起串連),另一台成為backup server(這台伺服器存放資料的冗餘備份,他是ssh server)。那麼,首先,將ssh配置好,配成不用輸入口令就可以在兩台機器上穿梭,至少要配成從primary server到backup server不需要輸入口令,用public/private key即可做到。然後用如下的rsync命令就可以開始同步:

#rsync -v -a -z -e ssh --delete /www/ <backup server>:/www

這條命令中,-v表示verbose; -a表示同步所有檔案和檔案夾; -z表示壓縮資料,這樣可以使傳輸的流量減小; -e ssh表示用ssh做為串連手段,如果想讓ssh作為rsync的預設串連手段,可以設定RSYNC_RSH環境變數; --delete表示如果destination(backup server)目錄裡面有些檔案是primary server目錄中所沒有的,那就刪掉,以此保證backup server和primary server檔案的完全一樣。所以,上述命令其實就是同步primary server的/www目錄下的所有檔案和backup server /www目錄下的所有檔案。這裡/www/後面要加一個slash,表示要同步的是這個目錄下的檔案,而不光是一個目錄。

5. rsync還有一個--stats的option,加上這個option後,rsync會列印出同步的細節,比如同步了哪些檔案,同步了多少位元組等。對於 沒有修改過的檔案,rsync是不會同步的,說白了rsync就是一個增量備份的東東。如果同步一個檔案,可以這樣:

#rsync -v -a -z -e ssh /etc/sysconfig/iptables <backup server>:/etc/sysconfig/

6. rsync還有一個option,是--bwlimit,這個東西可以用來限定rsync每秒發送的資料大小,在slow connection的情況下挺實用。比如:

rsync -v -a -z -e ssh --delete --bwlimit=8 /www/ <backup server>:/www # send 8K bytes per second

7. 使用cron從而是rsync成為一個計劃任務。crontab -e編輯一個定時任務:

# 每個小時的第30分鐘,執行rsync
30 * * * * rsync -v -a -z -e ssh --delete /www/ <backup server>:/www > /dev/null 2>&1

通過定時任務,輕鬆完成檔案同步。可以寫一個指令碼,增強功能,比如當rsync失敗的時候給我們發個郵件什麼的,這就很簡單了,不說了。

8. 最後羅嗦一句,rsync要使用873連接埠,ssh用22連接埠,如果有防火牆,記得開啟這兩個連接埠哦。

補充一個在使用rsync時候的收穫。rsync在讀取檔案名稱和檔案夾的時候,是以byte的方式讀取的,也 就是說,rsync是不管什麼encoding這種事情的,比如我的suse上的檔案和檔案夾都是UTF-8的編碼方式,此時我把這台機器上的東西備份到 另外一台機器上,所建立的檔案夾和檔案,他們的名字也就都是UTF-8的,此時如果我們在用samba掛載這台機器,如果codepage=cp936的 話,就會看到備份過來的檔案都是亂碼(中文的檔案名稱和檔案夾),所以,這裡一定要指定codepage=utf-8,這個時候再去看檔案,就都正常了。補充:rsync支援多種sync的方式,比如前面看到的ssh, rsh等,除了這些,rsync自身還提供一個rsyncd的程式,只要被同步的機器上啟動了rsyncd,那麼,rsync就可以不依賴 ssh,rsh,也能正常工作,此時就是和對方的rsyncd通訊了。這就是上面所說的873這個連接埠的由來了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.