剛剛看到一個(gè)老牌的ECVPS跑路了,在這里再說一下再可靠的服務(wù)商也要做好留一手的準(zhǔn)備,誰還沒可能有個(gè)小災(zāi)小難,做好備份,多處備份,你手里有備份才是王道。作為站長或者運(yùn)維,在服務(wù)器上從這臺(tái)同步到另外一臺(tái)是很頻繁的操作,之前我們介紹過用scp傳輸文件或目錄,但是不能判斷文件是否更改,是否有文件增刪,每次都是覆蓋,會(huì)浪費(fèi)掉很多時(shí)間。今天VPS偵探推薦的是另外一個(gè)利器rsync,全稱remote synchronize。它的特性如下:安裝方便、可以鏡像保存整個(gè)目錄樹和文件系統(tǒng)、可以容易的保持原來文件的權(quán)限、時(shí)間、軟硬鏈接等等、文件傳輸效率高、可以使用ssh等方式來傳輸文件也可以通過直接的socket連接等。
安裝rsync
CentOS/Fedora/RHEL: yum install rsync
Debian/Ubuntu: apt-get install rsync
rsync使用教程
rsync有兩種工作方式:SSH和daemon。
- SSH方式是使用系統(tǒng)上的用戶通過SSH進(jìn)行同步操作。
- daemon方式是rsync服務(wù)器會(huì)開一個(gè)873端口,等待客戶端去連接,連接是進(jìn)行驗(yàn)證,通過后進(jìn)行同步。
一、SSH模式下進(jìn)行同步操作
rsync -options SRC DEST
SRC代表源目錄,DEST代表目標(biāo)目錄,當(dāng)通過ssh鏈接時(shí), 有時(shí)需要指定ssh端口, 請(qǐng)使用這個(gè)方式:rsync -options -e "ssh -p 10000" SRC DEST
下面舉例說明一下常用到的場(chǎng)景:
1.1:本地拷貝目錄,將/home/wwwroot/vpser/拷貝到/data/wwwroot/vpser/
rsync -avu /home/wwwroot/vpser/ /data/wwwroot/vpser/
1.2:將本地目錄拷貝到遠(yuǎn)程服務(wù)器
rsync -avu --progress --delete /home/wwwroot/vpser.net/ root@1.2.3.4:/home/wwwroot/vpser.net/
如果改了SSH端口,需要加-e "ssh -p 你的SSH端口",如果不想顯示具體傳輸過程可以去掉P參數(shù),如果需要壓縮傳輸可以加z參數(shù)。
--delete 參數(shù),這樣當(dāng)本地刪除的文件,遠(yuǎn)程端也會(huì)刪除,保持完整的一致。
1.3:將遠(yuǎn)程服務(wù)器目錄拷貝到本地
rsync -avu --progress --delete root@1.2.3.4:/home/wwwroot/vpser.net/ /home/wwwroot/vpser.net/
二、daemon模式的配置
rsync daemon模式是以rsync服務(wù)器形式運(yùn)行,首先我們需要?jiǎng)?chuàng)建rsync服務(wù)器的配置文件,配置文件:/etc/rsyncd.conf 默認(rèn)此文件可能不存在,需要自己創(chuàng)建,配置信息如下:
port = 873
uid = root
gid = root
use chroot = no //使用chroot到文件系統(tǒng)中的目錄中
max connections = 100 //最大并發(fā)連接數(shù)
#motd file = /etc/rsyncd.motd //定義服務(wù)器信息的,自己寫 rsyncd.motd 文件內(nèi)容
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錯(cuò)誤
read only = no //設(shè)置no,客戶端可以上傳文件,yes是只讀
write only = no //no為客戶端可以下載,yes 不能下載
hosts allow = 192.168.2.0/24 //允許連接的IP,強(qiáng)烈建議加上你允許的IP,多個(gè)IP逗號(hào)隔開
list = yes //客戶請(qǐng)求時(shí),使用模塊列表
auth users = vpser //連接用戶名,是虛擬用戶與linux系統(tǒng)用戶無關(guān),多個(gè)用戶名逗號(hào)隔開
secrets file = /etc/rsyncd.secrets //驗(yàn)證密碼文件,文件格式為:用戶名:密碼
寫入配置時(shí)請(qǐng)將上面的注釋信息去掉,并調(diào)整里面的相關(guān)參數(shù)。我們也提供了一個(gè)模板文件http://soft.vpser.net/sync/rsync/rsyncd.conf 可自己下載放到/etc/下并修改相關(guān)參數(shù)。
/etc/rsyncd.secrets 文件權(quán)限必須是600,創(chuàng)建好該文件后可以執(zhí)行: chmod 600 /etc/rsyncd.secrets
注意:默認(rèn)rsync服務(wù)器并不是自動(dòng)啟動(dòng)的!
Debian/Ubuntu上是帶自啟動(dòng)腳本的,修改 /etc/default/rsync ,將里面的RSYNC_ENABLE=false 改成 RSYNC_ENABLE=true 保存就設(shè)成開機(jī)自啟動(dòng)了。
CentOS上啟動(dòng)腳本都是不帶的,執(zhí)行:wget http://soft.vpser.net/sync/rsync/init.d.rsync -O /etc/init.d/rsync && chmod +x /etc/init.d/rsync && chkconfig rsync on 如果不報(bào)錯(cuò)的話就會(huì)開機(jī)自啟動(dòng)了。
完成上面設(shè)置后,執(zhí)行:/etc/init.d/rsync start 即可啟動(dòng)。
測(cè)試rsync服務(wù)器:rsync -avuP vpser@192.227.165.35::vpser /home/wwwroot/vpser.net/ 進(jìn)行連接測(cè)試,注:@前的vpser為自定義模塊里設(shè)置的用戶名,::后面的vpser為你自定義模塊的名稱。
rsync使用小技巧:
1、可以用rsync快速刪除大量文件:
建立一個(gè)空的文件夾: mkdir /root/blank
用rsync刪除目標(biāo)目錄:rsync --delete-before -a -H -v --progress --stats /root/blank/ /home/wwwroot/cache/
這樣我們要?jiǎng)h除的 cache目錄就會(huì)被清空了,刪除的速 度會(huì)非常快。
2、如果開啟了iptables防火墻,請(qǐng)將873端口加入防火墻允許規(guī)則。
iptables -I INPUT -p tcp --dport 873 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 873 -j ACCEPT
3、用戶可以自己根據(jù)自己的需求選擇SSH或daemon模式
配合crontab定時(shí)執(zhí)行任務(wù) 自動(dòng)完成同步、備份等工作。
rsync 常用參數(shù)的具體解釋如下:
-v, --verbose 詳細(xì)模式輸出
-q, --quiet 精簡輸出模式
-c, --checksum 打開校驗(yàn)開關(guān),強(qiáng)制對(duì)文件傳輸進(jìn)行校驗(yàn)
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-r, --recursive 對(duì)子目錄以遞歸模式處理
-b, --backup 創(chuàng)建備份,也就是對(duì)于目的已經(jīng)存在有同樣的文件名時(shí),將老的文件重新命名為~filename?梢允褂--suffix選項(xiàng)來指定不同的備份文件前綴。
-suffix=SUFFIX 定義備份文件前綴
-u, --update 僅僅進(jìn)行更新,也就是跳過所有已經(jīng)存在于DST,并且文件時(shí)間晚于要備份的文件。(不覆蓋更新的文件)
-l, --links 保留軟鏈結(jié)
-p, --perms 保持文件權(quán)限
-o, --owner 保持文件屬主信息
-g, --group 保持文件屬組信息
-t, --times 保持文件時(shí)間信息
-e, --rsh=COMMAND 指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步
--delete 刪除那些DST中SRC沒有的文件
--delete-excluded 同樣刪除接收端那些被該選項(xiàng)指定排除的文件
--delete-after 傳輸結(jié)束以后再刪除
--ignore-errors 及時(shí)出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除
--force 強(qiáng)制刪除目錄,即使不為空
--timeout=TIME IP超時(shí)時(shí)間,單位為秒
--progress 顯示備份過程
-z, --compress 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理
--exclude=PATTERN 指定排除不需要傳輸?shù)奈募J?br />
--include=PATTERN 指定不排除而需要傳輸?shù)奈募J?br />
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件