­

rsync實現服務器之間同步目錄文件

  • 2019 年 12 月 20 日
  • 筆記

一般情況下

服務環境一般有三種

  1. dev   開發環境
  2. test   測試環境
  3. 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!!!