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>
下面這張圖也是盜來的(有圖就是好理解),以下是Alice透過對稱金鑰技術發送訊息給Bob:
<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息 公钥加密,私钥解密</code>
了解了上面公鑰和私鑰的知識,現在我們來在兩個主機之間建立信任關係,
,,要在101上對100建立信任關係(也就是100登入101的時候不需要輸入密碼),這個時候就用到了私鑰簽署的過程:<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>
<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>
<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教程有興趣的朋友有所幫助。