Rsync全稱是remote synchronize,也就是遠程同步工具。官網介紹,「rsync is an open source utility that provides fast incremental file transfer. (rsync是一款提供快速增量文件傳輸的開源工具)」。主要用來解決服務器間文件拷貝或目錄同步的問題。最多見的應用場景就是服務器熱備份。目前最新版本3.1.2在2015年12月發佈,可是阿里雲服務器yum源仍是3.0.9。html
1、rsync應用基礎
經常使用場景:
1,本地磁盤鏡像;
2,遠程服務器增量備份;
3,資源站匿名鏡像;
搭配軟件:
cron(定時任務)
lsyncd(實時同步工具)
相似功能軟件:
lsyncd,scp,sftp,rcp等
Rsync幾種用法
1,本地同步:
rsync –vr --delete /from_disk1/ /to_disk2/
-v 表示顯示詳細同步信息
-r 表示遞歸到子目錄
--delete 表示刪除文件操做也會被同步
2,遠程同步經過ssh協議
本地文件同步到遠程服務器
rsync –r –-delete /data/from/ root@192.168.1.23:/data/to/
遠程服務器文件目錄同步到本地
rsync –r –delete root@192.168.1.23:/data/to/ /data/from
執行過程當中須要輸入密碼,和ssh登陸同樣
3,遠程同步經過socket協議,也就是 rsync -–daemon,該用法最經常使用,須要配置服務端,客戶端經過rsync命令進行同步,下面經過一個實際應用場景來詳細講解,而後再介紹一下詳細配置。linux
2、應用場景shell
咱們就來講說最簡單的主服務器熱備份實現方案吧數據庫
有兩個服務器,
Main Server是主服務器,正常情況下對外提供服務,新功能直接上線到該服務器
HotBackUp Server 是熱備份服務器,當主服務器出現異常時,全部訪問立馬切換到該服務器,代碼和資源須要和主服務器保持一致
那麼就存在這麼幾個問題(這裏假設只考慮代碼和靜態資源文件,數據庫是獨立的):
1, 當主服務器新上線代碼是,熱備服務器如何保持一致
2, 用戶將圖片上傳到主服務器,熱備服務器如何保持一致
這個時候rsync就能夠排上用場了:
解決方案一:
1,熱備服務器上配置 rsync server服務
2,主服務器經過cron設置定時任務,每分鐘執行rsync命令,將服務目錄同步到熱備服務器
解決方案二:
1,主服務器上配置rsync server 服務
2,熱備服務器經過cron設置定時任務,每分鐘執行rsync命令,將主服務器目錄同步到本地
解決方案三:
1,熱備服務器上配置rsync server服務
2,主服務器啓動lrsync服務,實時監聽目錄變更,將變更文件同步到熱備服務器
具體方案的選擇,就須要根據網站自身業務來選定了,有了方案,咱們接下來聊聊具體如何配置吧bash
3、配置和應用
1, Rsync Server端配置,ip爲192.168.2.33,在/etc/ 目錄下新建一個rsyncd.conf,內容以下
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secret file = /var/run/rsync.pass
[wwwroot]
path = /www/html
hosts allow = 192.169.2.171
uid = root
gid = root
port=874
auth users = test_sync
read only = no
在/var/run/ 目錄下新建一個rsync.pass文件,寫入用戶名和密碼’test_rsync:12345678’,而且修改權限爲600
服務端啓動方式:rsync –daemon (默認配置文件是/etc/rsyncd.conf)
也可指定配置文件啓動:/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf服務器
2, rsync客戶端同步
建立一個密碼文件/etc/rsync.pass,寫入密碼’12345678’,並修改權限爲600
執行同步命令:
rsync -avH --delete --progress /data/shiwei/platforms/ test_rsync@192.168.2.33::wwwroot --password-file=/etc/rsync.pass
若是須要定時同步,這裏能夠經過定時任務工具cron來設置定時執行
新建一個執行該命令的shell文件,/root/rsync.sh,修改成可執行權限」chmod +x /root/rsync.sh」,編輯內容以下:
#! /bin/bash
rsync -avH --delete --progress /data/shiwei/platforms/ test_rsync@192.168.2.33::wwwroot --password-file=/etc/rsync.pass
vi打開/etc/crontab,加入以下一行,就能夠
*/1 * * * * root /root/rsync.sh
這樣每分鐘開始時,就會執行自動同步了ssh
參考:
官網:https://rsync.samba.org/
Rsync配置項說明(全英文哦):https://download.samba.org/pub/rsync/rsyncd.conf.html
Lsyncd+sync實現實時同步:http://www.oschina.net/question/54100_137632
linux下遠程傳輸文件的方式sftp.scp,rsync,rcp http://www.2cto.com/os/201109/104734.htmlsocket