整個網站一般會很大,尤爲的其中靜態的圖片視頻之類,但咱們一般不會修改他們,日常只會修改幾個文件,若是每次更新都將整個網站從本地上傳到服務器,無疑很費時間,若是要找到修改的文件,並只上傳這些文件,甚至只上傳這些文件修改的部分,無疑會方便不少。nginx
這就要用的到今天的主角Rsync,Rsync 能夠執行增量備份,它只傳輸源文件和目標文件之間不一致的部分git
web服務器root目錄 /usr/share/nginx/game.shaochenfeng.com
本地項目目錄 /git/game.shaochenfeng.com/publicweb
首先建議配置好本地到web服務器的ssh免密碼登錄[如何?](),不配置須要之後每次同步時輸入密碼算法
直接yum或apt安裝就能夠,在服務器端和本地都安裝bash
yum install rsync # 紅帽系 apt install rsync # Debian系
爲何要在服務器也安裝rsync呢?由於雖然是經過ssh創建連接,但rsync使用的是本身的傳輸規則,而不是scp服務器
在本地執行,同步 本地項目目錄 到 web服務器root目錄運維
rsync -avz --delete <本地路徑> www@192.168.56.10:<遠程路徑> rsync -avz --delete /git/game.shaochenfeng.com/public www@192.168.56.10:/usr/share/nginx/game.shaochenfeng.com
其中參數ssh
-a 包含-rtplgoD
-r 遞歸傳輸 同步有文件夾時使用
-v 顯示傳輸過程
-l 保留軟鏈接
-p 保持權限屬性
-o 保持屬主
-g 保持屬組
-D 保持設備文件信息
-t 保持文件的時間屬性,這個必定要有,否則下次同步不能判斷那些文件發生了修改
--backup 對服務器已存在的文件作一個備份,備份的文件名後默認使用"~"作後綴
--delete 本地刪除的文件,在服務器也會被刪除
--exclude 過濾指定文件,如--exclude 「logs」會把文件名包含logs的文件或者目錄過濾掉,不一樣步
-P 顯示同步過程,好比速率,比-v更加詳細
-u 加上該選項後,若是DEST中的文件比SRC新,則不一樣步
--size-only 默認算法會檢查修改時間和文件大小,加上這個只檢查文件大小
-z 進行壓縮傳輸,提升效率ide
歡迎訪問個人官網,查看運維技術文章 www.shaochenfeng.com網站