rsync實現服務器之間同步目錄文件
- 2019 年 12 月 20 日
- 筆記
一般情況下
服務環境一般有三種
- dev 開發環境
- test 測試環境
- prod 生產環境
環境多了,不可避免的事是一些重複的操作,部署什麼的
能不能在開發環境打包後,直接同步到測試環境呢?(畢竟重複的事乾的多了是會煩的)
是可以的
linux下可以直接使用rsync命令
windows下可以安裝cygwin來實現
copy一張圖片

這裡記錄下同步到遠程服務器的操作,也就是圖上的push推
拿兩台服務器
本地:192.168.1.10
遠程:192.168.1.130
需求:將192.168.1.10的/opt/vue/index.html文件 和 /opt/vue/static目錄同步到遠程192.168.1.130的/opt/dist目錄下
操作:
rsync -avP -e "ssh -i ~/.ssh/130/my.pem" /opt/vue/static /opt/vue/index.html root@192.168.1.130:/opt/dist
參數說明
- -a –archive :歸檔模式,表示遞歸傳輸並保持文件屬性。等同於"-rtopgDl"
- -v:顯示rsync過程中詳細信息。可以使用"-vvvv"獲取更詳細信息
- -P:顯示文件傳輸的進度信息。(實際上"-P"="–partial –progress",其中的"–progress"才是顯示進度信息的)
- my.pem文件是登錄192.168.1.130服務器的私鑰,生成方式可以查看這篇文章 ssh通過pem文件登陸服務器
既然想實時操作,並不想每次都執行這麼個腳本怎麼辦
配合linux定時任務 crontab,定時執行即可
方式:將命令寫入一腳本中,定時執行即可
cd /root vim rsync-vue-130.sh //寫入rsync -avP -e "ssh -i ~/.ssh/130/my.pem" /opt/vue/static /opt/vue/index.html root@192.168.1.130:/opt/dist // crontab -e 編輯定時任務,寫入,如下為每兩分鐘同步一次 */2 * * * * /root/rsync-vue-130.sh
如果是windows環境的話,需要安裝cygwin,這樣就會在windows平台提供了linux環境了
如圖:

安裝可以參考https://blog.csdn.net/heshushun/article/details/78664384
perfect!!!