用Rsync,實現網站的增量部署

整個網站通常會很大,尤其的其中靜態的圖片視頻之類,但我們通常不會修改他們,平常只會修改幾個文件,如果每次更新都將整個網站從本地上傳到服務器,無疑很費時間,如果要找到修改的文件,並只上傳這些文件,甚至只上傳這些文件修改的部分,無疑會方便很多。

這就要用的到今天的主角Rsync,Rsync 可以執行增量備份,它只傳輸源文件和目標文件之間不一致的部分

環境:

web服務器root目錄 /usr/share/nginx/game.shaochenfeng.com
本地項目目錄 /git/game.shaochenfeng.com/public

首先建議配置好本地到web服務器的ssh免密碼登陸[如何?](),不配置需要以後每次同步時輸入密碼

1.在web服務器端安裝rsync

直接yum或apt安裝就可以,在服務器端和本地都安裝

yum install rsync # 紅帽系
apt install rsync # Debian系

爲什麼要在服務器也安裝rsync呢?因爲雖然是通過ssh建立鏈接,但rsync使用的是自己的傳輸規則,而不是scp

2.向服務器推送

在本地執行,同步 本地項目目錄 到 web服務器root目錄

rsync -avz --delete <本地路徑> [email protected]:<遠程路徑>
rsync -avz --delete /git/game.shaochenfeng.com/public [email protected]:/usr/share/nginx/game.shaochenfeng.com

其中參數

  • -a 是遞歸傳輸並保持文件屬性,在傳輸帶有文件夾時使用,並保留文件的屬性
  • -v 顯示傳輸過程
  • -z 進行壓縮傳輸,提高效率
  • --delete 本地刪除的文件,在服務器也會被刪除

附上rsync常用選項

-a 包含-rtplgoD
-r 遞歸傳輸 同步有文件夾時使用
-v 顯示傳輸過程
-l 保留軟連接
-p 保持權限屬性
-o 保持屬主
-g 保持屬組
-D 保持設備文件信息
-t 保持文件的時間屬性,這個一定要有,不然下次同步不能判斷那些文件發生了修改
--backup 對服務器已存在的文件做一個備份,備份的文件名後默認使用"~"做後綴
--delete 本地刪除的文件,在服務器也會被刪除
--exclude 過濾指定文件,如--exclude “logs”會把文件名包含logs的文件或者目錄過濾掉,不同步
-P 顯示同步過程,比如速率,比-v更加詳細
-u 加上該選項後,如果DEST中的文件比SRC新,則不同步
--size-only 默認算法會檢查修改時間和文件大小,加上這個只檢查文件大小
-z 進行壓縮傳輸,提高效率

歡迎訪問我的官網,查看運維技術文章 www.shaochenfeng.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章