目錄
兩種方式的差別
兩台機器之間建立信任關係
私鑰簽章過程
公鑰加密過程
建立主機之間的信任關係
在yanruitao192.168.1.100的家目錄下產生公鑰和私鑰(已經有的可以忽略)
在yanruitao192.168.1.101的家目錄下對yanruitao192.168.1.100建立信任關係
設定crontab
遇到的問題
參考文章
首頁 後端開發 php教程 記一次rsync增量同步遠端伺服器文件

記一次rsync增量同步遠端伺服器文件

Aug 08, 2016 am 09:24 AM
rsync

rsync remote shell 增量方式同步資料

rsync同步檔案有兩種方式,一種是daemon的方式(rsync daemon)另一種方式是透過遠端shell方式(rsync remote shell)。

兩種方式的差別

daemon方式,這種方式透過TCP方式連接遠端rsync daemon,需要使用設定文件,並啟用daemon進程。

<code>rsync [OPTION] user@host::src dest
rsync [OPTION] src user@host::dest</code>
登入後複製

remote shell方式,這種方式不需要使用設定文件,也不需要daemon進程。

<code>rsync [OPTION] user@host:src dest
rsync [OPTION] src user@host:dest</code>
登入後複製

daemon方式太麻煩了,好要去設定設定檔和daemon進程,所以我選用了remote shell方式,就像下面這樣去同步:

<code>  rsync -avr --delete yanruitao@123.123.123.123:/export/test/htdocs/files/ /export/test/htdocs/files/</code>
登入後複製

其中參數avr --delete分別表示

<code>-a 归档(archive)模式,以递归方式传输文件,并保持文件属性
-v 输出同步的详细信息(verbose)
-r 对子目录进行递归模式处理(recursive)
--delete 删除源(SRC)中没有目标(DST)中有的文件</code>
登入後複製

如果一切正常的話,當運行上面的同步命令,會提示輸入遠端機器yanruitao用戶的密碼(第一次的話會提示是否建立關係(好像是,具體忘了),直接回車就行),執行完之後會按照規則去同步。

但有個問題,我要新增一個crontab任務,在每天2點鐘去增量同步一次,這時候我不能去輸密碼,這時候就得在兩台機器上建立信任關係

兩台機器之間建立信任關係

在建立信任關係之前先看看基於公鑰、私鑰的加密和認證

私鑰簽章過程

下面這張圖是偷來的,哈哈,用這張圖理解認證過程再適合不過了:

<code>消息-->[私钥]-->签名-->[公钥]-->认证
私钥数字签名,公钥验证</code>
登入後複製
  1. Alice產生公鑰和私鑰,並將公鑰發送給Bob。
  2. Alice用自己的私鑰產生簽名,也就是加密。
  3. Alice將簽署的訊息發送給Bob。
  4. Bob用Alice的公鑰解密,驗證簽章真偽。
    記一次rsync增量同步遠端伺服器文件
公鑰加密過程

下面這張圖也是盜來的(有圖就是好理解),以下是Alice透過對稱金鑰技術發送訊息給Bob:

<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息
公钥加密,私钥解密</code>
登入後複製
  1. Bob產生自己的公鑰和私鑰,並將公鑰發送給Alice。
  2. Alice用Bob的公鑰將資訊加密。
  3. Alice將加密後的訊息傳送給Bob。
  4. Bob用他的私鑰進行解密,得到Alice傳送的訊息。
    記一次rsync增量同步遠端伺服器文件

建立主機之間的信任關係

了解了上面公鑰和私鑰的知識,現在我們來在兩個主機之間建立信任關係,,要在101上對100建立信任關係(也就是100登入101的時候不需要輸入密碼),這個時候就用到了私鑰簽署的過程:

在yanruitao192.168.1.100的家目錄下產生公鑰和私鑰(已經有的可以忽略)
<code>ssh-keygen -t rsa
#执行完之后会在家目录下的.ssh文件夹下生成id_rsa、id_rsa.pub两个文件,后者是公钥。
scp .ssh/id_rsa.pub yanruitao@192.168.1.101:/home/yanruitao/
#scp同样是通过remote shell的方式传送文件,回车之后会提示输入密码,此时
#还未建立信任关系,因此需要输入密码。确认100的公钥发送给101</code>
登入後複製
在yanruitao192.168.1.101的家目錄下對yanruitao192.168.1.100建立信任關係
<code>#将刚才传送的100机器的公钥写入101yanruitao及目录下的.ssh/authorized_keys文件
cat id_rsa.pub >> .ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#至此就在yanruitao@192.168.1.101上对192.168.1.100建立了信任关系</code>
登入後複製
設定crontab
<code>0 */2 * * * rsync yanruitao@192.168.1.101:/export/wwwroot/hotdocs/files/ /export/wwwroot/hotdocs/files/
#设置完成,每天02:00分会执行一次增量同步</code>
登入後複製
遇到的問題

當然了,自己實際操作的時候可能遇到問題,我在弄的時候,兩台機器的用戶名是不同的,一個yanruitao一個mywife(哈哈,勿笑),在yanruitao對mywife簡歷信任關係,這個時候就需要重新在mywife家目錄下操作上面的建立信任關係步驟。還有一個問題就是,在mywife機器上的/export/wwwroot/htdocs/files/資料夾的擁有者一定要是mywife:

<code>#修改文件夹所有者为mywife
sudo chown mywife:users /export/wwwroot/htdocs/files/</code>
登入後複製

不然可能會報錯(具體錯誤我忘了,在公司碰到的),雖然好像不影響同步,但是$?會返回23,影響下面的操作,這裡也要留意下。

參考文章

http://www.williamlong.info/archives/837.html
http://www.cnblogs.com/ymy124/archive/2012/04/04/2432432.html
http://www.zhihu.com /question/25912483

本文版權歸作者iforever()所有,未經作者本人同意禁止任何形式的轉載,轉載文章之後必須在文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。

以上就介紹了記一次rsync增量同步遠端伺服器文件,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

解釋PHP中晚期靜態結合的概念。 解釋PHP中晚期靜態結合的概念。 Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章討論了框架中的基本安全功能,以防止漏洞,包括輸入驗證,身份驗證和常規更新。

如何用PHP的cURL庫發送包含JSON數據的POST請求? 如何用PHP的cURL庫發送包含JSON數據的POST請求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

自定義/擴展框架:如何添加自定義功能。 自定義/擴展框架:如何添加自定義功能。 Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

ReactPHP的非阻塞特性究竟是什麼?如何處理其阻塞I/O操作? ReactPHP的非阻塞特性究竟是什麼?如何處理其阻塞I/O操作? Apr 01, 2025 pm 03:09 PM

深入解讀ReactPHP的非阻塞特性ReactPHP的一段官方介紹引起了不少開發者的疑問:“ReactPHPisnon-blockingbydefault....

See all articles