rsync 是 Unix 系統中一個經常使用的設備間文件同步工具,用好它必定會提高你不少效率。
git
此次仍是跟你們分享一個服務端相關的知識,就當是一塊兒擴展認知吧,也說不定在某些時候正好能幫到你。此次跟你們聊得是一個叫作 rsync 的工具, 從它的名字能夠看出,是一個專門用於在不一樣機器上面同步文件的工具。swift
rsync 分爲服務端和客戶端。 在服務端通常是以 daemon 守護進程的方式運行,監聽客戶端發送過來的文件。 在客戶端, rsync 用於向開啓 daemon 進程的服務器同步文件。vim
使用它須要在服務端和客戶端同時進行配置。 咱們首先來看服務端的配置。 服務器
若是你的服務端操做系統沒有預裝 rsync, 能夠經過操做系統的包管理工具安裝。 現代的類 Unix 系統大多數的包管理系統都很是完善,使用效率大幅提升。微信
以個人實驗環境 CentOS 7 爲例, 使用 yum 包管理工具安裝:markdown
$ yum install rsync複製代碼
安裝完成後,須要編輯 rsync 的配置文件:編輯器
$ vim /etc/rsyncd.conf複製代碼
使用 vim 編輯器打開這個文件,而後輸入以下內容:工具
[document]
path = /usr/share/document
list = true
uid = root
gid = root
read only = false
複製代碼
這是 rsync 最簡單的一種配置方式,首先一對中括號的 [document] 表明配置節點的名稱。 緊接着幾個屬性:oop
path: 該節點對應的文件路徑。
list: 表示該節點是否可被發現。
uid: 指定傳輸到這裏文件所屬的用戶。
gid: 指定傳輸到這裏的文件所屬的組。
read only: 該目錄是否只讀。ui
配置完這些選項以後,運行這條命令,則可開啓 rsync 服務:
$ rsync --daemon複製代碼
到這裏服務端的配置就完成了, 這裏是最簡單的配置,關於 rsync 更完整的配置項,你們能夠參考這裏 www.gsp.com/cgi-bin/man…
服務端配置完成之後,咱們就能夠在客戶端操做文件同步了, 首先執行命令:
$ export RSYNC_PASSWORD=""複製代碼
這個命令給 rsync 設置環境變量,設置服務器的登陸密碼。固然,你也能夠不設置這個環境變量,這樣在進行文件同步的時候,你就須要手工的輸入密碼。
接下來執行這條命令,就能夠將本地的文件同步到服務端了:
rsync -azv ./ root@222.112.23.21::document --delete --exclude '.git'複製代碼
這幾個參數咱們逐一講解一下。
-a 參數: 是 archive 模式的縮寫,這個模式是一系列參數的組合,通常文件同步都會帶上它。
-z 參數: 對傳輸的文件進行壓縮。
-v 參數: 輸出詳細日誌。
這三個參數通常使用 -azv 組合寫出。 緊接着這個參數是要同步的本地目錄, 這裏輸入 ./ 表明當前目錄。
而後接着寫出遠程服務器的用戶名和 ip 地址, 在冒號後面是 rsync 模塊名稱 document, 在前面的配置文件中我們設置過,還記得不?
—delete 參數表示,刪除遠程服務器存在,但本地目錄不存在的文件。 加入你在本地刪除了一個文件,想把這個文件的刪除也同步到遠程服務器,就須要加上這個參數。
—exclude 是排除選項,在這個參數中指定的文件,不會計入 rsync 文件同步列表中。 咱們這個例子中忽略了 .git 目錄,也就是 git 版本控制系統的隱藏目錄。
執行這條命令後,咱們當前目錄以及子目錄中的全部文件就都會同步到咱們指定的遠程服務器中了。
rsync 是一個很是方便的文件同步工具。 相比於咱們更熟悉的 ftp 模式, rsync 的同步方案更加自動化。 好比你在開發一個小型的 Web App,就很是推薦使用 rsync 上傳你的程序文件。 除了進行服務器的文件同步, rsync 其實還支持更多的場景,只要涉及多個設備文件同步的問題, 都是 rsync 合適的場景。
若是你以爲這篇文章有幫助,還能夠關注微信公衆號 swift-cafe,會有更多個人原創內容分享給你~
本站文章均爲原創內容,如需轉載請註明出處,謝謝。