安裝rsync
CentOS/Fedora/RHEL: yum install rsync
Debian/Ubuntu: apt-get install rsync
rsync使用教程
rsync有兩種工作方式:SSH和daemon。
SSH方式是使用系統上的使用者通過SSH進行同步操作。
daemon方式是rsync伺服器會開一個873連接埠,等待用戶端去串連,串連是進行驗證,通過後進行同步。
一、SSH模式下進行同步操作
rsync -options SRC DEST
SRC代表來源目錄,DEST代表目標目錄,當通過ssh連結時, 有時需要指定ssh連接埠, 請使用這個方式:rsync -options -e "ssh -p 10000" SRC DEST
下面舉例說明一下常用到的情境:
1.1:本地拷貝目錄,將/home/wwwroot/vpser/拷貝到/data/wwwroot/vpser/
rsync -avu /home/wwwroot/vpser/ /data/wwwroot/vpser/
1.2:將本地目錄拷貝到遠程伺服器
rsync -avu --progress --delete /home/wwwroot/vpser.net/ root@1.2.3.4:/home/wwwroot/vpser.net/
如果改了SSH連接埠,需要加-e "ssh -p 你的SSH連接埠",如果不想顯示具體傳輸過程可以去掉P參數,如果需要壓縮傳輸可以加z參數。
--delete 參數,這樣當本地刪除的檔案,遠程端也會刪除,保持完整的一致。
1.3:將遠程伺服器目錄拷貝到本地
rsync -avu --progress --delete root@1.2.3.4:/home/wwwroot/vpser.net/ /home/wwwroot/vpser.net/
二、daemon模式的配置
rsync daemon模式是以rsync伺服器形式運行,首先我們需要建立rsync伺服器的設定檔,設定檔:/etc/rsyncd.conf 預設此檔案可能不存在,需要自己建立,配置資訊如下:
port = 873
uid = root
gid = root
use chroot = no //使用chroot到檔案系統中的目錄中
max connections = 100 //最大並發串連數
#motd file = /etc/rsyncd.motd //定義伺服器資訊的,自己寫 rsyncd.motd 檔案內容
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
timeout = 300
[vpser] //自訂模組
path = /home/wwwroot/vpser.net/ //用來指定要備份的目錄
ignore errors //可以忽略一些IO錯誤
read only = no //設定no,用戶端可以上傳檔案,yes是唯讀
write only = no //no為用戶端可以下載,yes 不能下載
hosts allow = 192.168.2.0/24 //允許串連的IP,強烈建議加上你允許的IP,多個IP逗號隔開
list = yes //客戶請求時,使用模組列表
auth users = vpser //串連使用者名稱,是虛擬使用者與linux系統使用者無關,多個使用者名稱逗號隔開
secrets file = /etc/rsyncd.secrets //驗證密碼檔案,檔案格式為:使用者名稱:密碼
寫入配置時請將上面的注釋資訊去掉,並調整裡面的相關參數。我們也提供了一個模板檔案http://soft.vpser.net/sync/rsync/rsyncd.conf 可自己下載放到/etc/下並修改相關參數。
/etc/rsyncd.secrets 檔案許可權必須是600,建立好該檔案後可以執行: chmod 600 /etc/rsyncd.secrets
注意:預設rsync伺服器並不是自動啟動的!
Debian/Ubuntu上是帶自啟動指令碼的,修改 /etc/default/rsync ,將裡面的RSYNC_ENABLE=false 改成 RSYNC_ENABLE=true 儲存就設成開機自啟動了。
CentOS上啟動指令碼都是不帶的,執行:wget http://soft.vpser.net/sync/rsync/init.d.rsync -O /etc/init.d/rsync && chmod +x /etc/init.d/rsync && chkconfig rsync on 如果不報錯的話就會開機自啟動了。
完成上面設定後,執行:/etc/init.d/rsync start 即可啟動。
測試rsync伺服器:rsync -avuP vpser@192.227.165.35::vpser /home/wwwroot/vpser.net/ 進行串連測試,註:@前的vpser為自訂模組裡設定的使用者名稱,::後面的vpser為你自訂模組的名稱。
rsync使用小技巧:
1、可以用rsync快速刪除大量檔案:
建立一個空的檔案夾: mkdir /root/blank
用rsync刪除目標目錄:rsync --delete-before -a -H -v --progress --stats /root/blank/ /home/wwwroot/cache/
這樣我們要刪除的 cache目錄就會被清空了,刪除的速 度會非常快。
2、如果開啟了iptables防火牆,請將873連接埠加入防火牆允許規則。
iptables -I INPUT -p tcp --dport 873 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 873 -j ACCEPT
3、使用者可以自己根據自己的需求選擇SSH或daemon模式
配合crontab定時執行任務 自動完成同步、備份等工作。
rsync 常用參數的具體解釋如下:
-v, --verbose 詳細模式輸出
-q, --quiet 精簡輸出模式
-c, --checksum 開啟校正開關,強制對檔案傳輸進行校正
-a, --archive 歸檔模式,表示以遞迴方式傳輸檔案,並保持所有檔案屬性,等於-rlptgoD
-r, --recursive 對子目錄以遞迴模式處理
-b, --backup 建立備份,也就是對於目的已經存在有同樣的檔案名稱時,將老的檔案重新命名為~filename。可以使用--suffix選項來指定不同的備份檔案首碼。
-suffix=SUFFIX 定義備份檔案首碼
-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且檔案時間晚於要備份的檔案。(不覆蓋更新的檔案)
-l, --links 保留軟鏈結
-p, --perms 保持檔案許可權
-o, --owner 保持檔案屬主資訊
-g, --group 保持檔案屬組資訊
-t, --times 保持檔案時間資訊
-e, --rsh=COMMAND 指定使用rsh、ssh方式進行資料同步
--delete 刪除那些DST中SRC沒有的檔案
--delete-excluded 同樣刪除接收端那些被該選項指定排除的檔案
--delete-after 傳輸結束以後再刪除
--ignore-errors 及時出現IO錯誤也進行刪除
--force 強制移除目錄,即使不為空白
--timeout=TIME IP逾時時間,單位為秒
--progress 顯示備份過程
-z, --compress 對備份的檔案在傳輸時進行壓縮處理
--exclude=PATTERN 指定排除不需要傳輸的檔案模式
--include=PATTERN 指定不排除而需要傳輸的檔案模式
--exclude-from=FILE 排除FILE中指定模式的檔案
--include-from=FILE 不排除FILE指定模式比對的檔案