WIKI使用導(dǎo)航
站長(zhǎng)百科導(dǎo)航
站長(zhǎng)專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機(jī)
- cPanel
- 網(wǎng)址導(dǎo)航專題
- 云計(jì)算
- 微博營(yíng)銷
- 虛擬主機(jī)管理系統(tǒng)
- 開放平臺(tái)
- WIKI程序與應(yīng)用
- 美國(guó)十大主機(jī)
CentOS/使用rsync同步
rsync簡(jiǎn)介[ ]
rsync(rem ote synchronize)是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過 LAN/WAN 快速同步多臺(tái)主機(jī)之間的文件。也可以使用 rsync 同步本地硬盤中的不同目錄。
rsync是用于替代rcp的一個(gè)工具,rsync 使用所謂的 rsync算法進(jìn)行數(shù)據(jù)同步,這種算法只傳送兩個(gè)文件的不同部分,而不是每次都整份傳送,因此速度非???。
rsync支持大多數(shù)的類 Unix 系統(tǒng),無(wú)論是 Linux、Solaris 還是 BSD上 都經(jīng)過了良好的測(cè)試。 CentOS系統(tǒng)默認(rèn)就安裝了rsync軟件包。 此外,在windows平臺(tái)下也有相應(yīng)的版本,如cwrsync
rsync特點(diǎn)[ ]
rsync 具有如下的基本特性:
- 可以鏡像保存整個(gè)目錄樹和文件系統(tǒng)
- 可以很容易做到保持原來(lái)文件的權(quán)限、時(shí)間、軟硬鏈接等
- 無(wú)須特殊權(quán)限即可安裝
- 優(yōu)化的流程,文件傳輸效率高
- 可以使用 rsh、ssh 方式來(lái)傳輸文件,當(dāng)然也可以通過直接的 socket 連接
- 支持匿名傳輸,以方便進(jìn)行網(wǎng)站鏡象
在使用 rsync 進(jìn)行遠(yuǎn)程同步時(shí),可以使用兩種方式:遠(yuǎn)程Shell方式(建議使用 ssh,用戶驗(yàn)證由 ssh 負(fù)責(zé))和C/S方式(即客戶連接遠(yuǎn)程 rsync 服務(wù)器,用戶驗(yàn)證由 rsync 服務(wù)器負(fù)責(zé))。
無(wú)論本地同步目錄還是遠(yuǎn)程同步數(shù)據(jù),首次運(yùn)行時(shí)將會(huì)把全部文件拷貝一次,以后再運(yùn)行時(shí)將只拷貝有變化的文件(對(duì)于新文件)或文件的變化部分(對(duì)于原有文件)。rsync 在首次復(fù)制時(shí)沒有速度優(yōu)勢(shì),速度不如 tar,因此當(dāng)數(shù)據(jù)量很大時(shí)您可以考慮先使用 tar 進(jìn)行首次復(fù)制,然后再使用 rsync 進(jìn)行數(shù)據(jù)同步。
鏡像、備份和歸檔[ ]
實(shí)施備份的兩種情況:
- 需保留備份歷史歸檔:在備份時(shí)保留歷史的備份歸檔,是為了在系統(tǒng)出現(xiàn)錯(cuò)誤后能恢復(fù)到從前正確的狀態(tài)。這可以使用完全備份和增量備份來(lái)完成。
- 可以使用 tar 命令保存歸檔文件。
- 為了提高備份效率,也可以使用 rsync 結(jié)合 tar 來(lái)完成。
- 無(wú)需保留備份歷史歸檔:若無(wú)需從歷史備份恢復(fù)到正確狀態(tài),則只備份系統(tǒng)最“新鮮”的狀態(tài)即可。這可以簡(jiǎn)單地使用 rsync 同步來(lái)完成。此時(shí)通常稱為鏡像。鏡像可以分為兩種:
- 被鏡像的目錄在各個(gè)主機(jī)上保持相同的位置。此時(shí)一般是為了實(shí)施負(fù)載均衡而對(duì)多個(gè)主機(jī)進(jìn)行同步鏡像。例如:將主機(jī)A的/srv/www 目錄同步到主機(jī)B的/srv/www目錄等。
- 被鏡像的目錄在各個(gè)主機(jī)上不保持相同的位置。例如:主機(jī) A 和主機(jī) B 都運(yùn)行著各自的業(yè)務(wù),同時(shí)又互為鏡像備份。此時(shí)主機(jī)A的/srv/www目錄同步到主機(jī)B的/back ups/hosta/www 目錄;主機(jī)B的/srv/www目錄同步到主機(jī)A的/back ups/hostb/www 目錄等。
rsync命令[ ]
rsync是一個(gè)功能非常強(qiáng)大的工具,其命令也有很多功能選項(xiàng)。rsync的命令格式為:
1)本地使用: rsync [OPTION...] SRC... [DEST] 2)通過遠(yuǎn)程 Shell 使用: 拉: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 推: rsync [OPTION...] SRC... [USER@]HOST:DEST 3)訪問 rsync 服務(wù)器: 拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 推: rsync [OPTION...] SRC... [USER@]HOST::DEST 拉: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 推: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
其中:
- SRC: 是要復(fù)制的源位置
- DEST: 是復(fù)制目標(biāo)位置
- 若本地登錄用戶與遠(yuǎn)程主機(jī)上的用戶一致,可以省略 USER@
- 使用遠(yuǎn)程 shell 同步時(shí),主機(jī)名與資源之間使用單個(gè)冒號(hào)“:”作為分隔符
- 使用 rsync 服務(wù)器同步時(shí),主機(jī)名與資源之間使用兩個(gè)冒號(hào)“::”作為分隔符
- 當(dāng)訪問 rsync 服務(wù)器時(shí)也可以使用 rsync://URL
- “拉”復(fù)制是指從遠(yuǎn)程主機(jī)復(fù)制文件到本地主機(jī)
- “推”復(fù)制是指從本地主機(jī)復(fù)制文件到遠(yuǎn)程主機(jī)
- 當(dāng)進(jìn)行“拉”復(fù)制時(shí),若指定一個(gè) SRC 且省略 DEST,則只列出資源而不進(jìn)行復(fù)制
下面列出常用選項(xiàng):
選項(xiàng) | 說明 |
---|---|
-a,--archive | 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等價(jià)于 -rlptgoD (注意不包括 -H) |
-r,--recursive | 對(duì)子目錄以遞歸模式處理 |
-l,--links | 保持符號(hào)鏈接文件 |
-H,--hard-links | 保持硬鏈接文件 |
-p,--perms | 保持文件權(quán)限 |
-t,--times | 保持文件時(shí)間信息 |
-g,--group | 保持文件屬組信息 |
-o,--owner | 保持文件屬主信息 (super-user only) |
-D | 保持設(shè)備文件和特殊文件 (super-user only) |
-z,--compress | 在傳輸文件時(shí)進(jìn)行壓縮處理 |
--exclude=PATTERN | 指定排除一個(gè)不需要傳輸?shù)奈募ヅ淠J? |
--exclude-from=FILE | 從FILE中讀取排除規(guī)則 |
--include=PATTERN | 指定需要傳輸?shù)奈募ヅ淠J? |
--include-from=FILE | 從FILE中讀取包含規(guī)則 |
--copy-unsafe-links | 拷貝指向SRC路徑目錄樹以外的鏈接文件 |
--safe-links | 忽略指向SRC路徑目錄樹以外的鏈接文件(默認(rèn)) |
--existing | 僅僅更新那些已經(jīng)存在于接收端的文件,而不備份那些新創(chuàng)建的文件 |
--ignore-existing | 忽略那些已經(jīng)存在于接收端的文件,僅備份那些新創(chuàng)建的文件 |
-b,--backup | 當(dāng)有變化時(shí),對(duì)目標(biāo)目錄中的舊版文件進(jìn)行備份 |
--backup-dir=DIR | 與-b結(jié)合使用,將備份的文件存到 DIR 目錄中 |
--link-dest=DIR | 當(dāng)文件未改變時(shí)基于 DIR 創(chuàng)建硬鏈接文件 |
--delete | 刪除那些接收端還有而發(fā)送端已經(jīng)不存在的文件 |
--delete-before | 接收者在傳輸之前進(jìn)行刪除操作 (默認(rèn)) |
--delete-during | 接收者在傳輸過程中進(jìn)行刪除操作 |
--delete-after | 接收者在傳輸之后進(jìn)行刪除操作 |
--delete-excluded | 在接收方同時(shí)刪除被排除的文件 |
-e,--rsh=COMMAND | 指定替代 rsh 的 shell 程序 |
--ignore-errors | 即使出現(xiàn) I/O 錯(cuò)誤也進(jìn)行刪除 |
--partial | 保留那些因故沒有完全傳輸?shù)奈募?,以是加快隨后的再次傳輸 |
--progress | 在傳輸時(shí)顯示傳輸過程 |
-P | 等價(jià)于--partial--progress |
--delay-updates | 將正在更新的文件先保存到一個(gè)臨時(shí)目錄(默認(rèn)為 “.~tmp~”),待傳輸完畢再更新目標(biāo)文件 |
-v,--verbose | 詳細(xì)輸出模式 |
-q,--quiet | 精簡(jiǎn)輸出模式 |
-h,--human-readable | 輸出文件大小使用易讀的單位(如,K,M等) |
-n,--dry-run | 顯示哪些文件將被傳輸 |
--list-only | 僅僅列出文件而不進(jìn)行復(fù)制 |
--rsync-path=PROGRAM | 指定遠(yuǎn)程服務(wù)器上的 rsync 命令所在路徑 |
--password-file=FILE | 從 FILE 中讀取口令,以避免在終端上輸入口令,通常在 cron 中連接 rsync 服務(wù)器時(shí)使用 |
-4,--ipv4 | 使用 IPv4 |
-6,--ipv6 | 使用 IPv6 |
--version | 打印版本信息 |
--help | 顯示幫助信息 |
若使用普通用戶身份運(yùn)行rsync命令,同步后的文件的屬主將改變?yōu)檫@個(gè)普通用戶身份。
若使用超級(jí)用戶身份運(yùn)行rsync命令,同步后的文件的屬主將保持原來(lái)的用戶身份。
rsync的基本使用[ ]
在本地磁盤同步數(shù)據(jù)[ ]
# rsync -a --delete /home /backups # rsync -a --delete /home/ /backups/home.0
在指定復(fù)制源時(shí),路徑是否有最后的 “/” 有不同的含義,例如:
- /home: 表示將整個(gè) /home 目錄復(fù)制到目標(biāo)目錄
- /home/:表示將 /home 目錄中的所有內(nèi)容復(fù)制到目標(biāo)目錄
使用基于ssh的rsync遠(yuǎn)程同步數(shù)據(jù)[ ]
1、同步靜態(tài)主機(jī)表文件
# 執(zhí)行“推”復(fù)制同步(centos5 是可解析的遠(yuǎn)程主機(jī)名) [root@soho ~]# rsync /etc/hosts centos5:/etc/hosts # 執(zhí)行“拉”復(fù)制同步(soho 是可解析的遠(yuǎn)程主機(jī)名) [root@centos5 ~]# rsync soho:/etc/hosts /etc/hosts
2、同步用戶的環(huán)境文件
# 執(zhí)行“推”復(fù)制同步 [osmond@soho ~]$ rsync ~/.bash* centos5: # 執(zhí)行“拉”復(fù)制同步 [osmond@cnetos5 ~]$ rsync soho:~/.bash* .
3、同步站點(diǎn)根目錄
# 執(zhí)行“推”復(fù)制同步 [osmond@soho ~]$ rsync -avz --delete /var/www root@192.168.0.101:/var/www # 執(zhí)行“拉”復(fù)制同步 [osmond@cnetos5 ~]$ rsync -avz --delete root@192.168.0.55:/var/www /var/www
- 使用基于 ssh 的 rsync 同步數(shù)據(jù)可以使用 -essh 參數(shù),當(dāng)前的 CentOS 默認(rèn)指定使用 ssh 作為遠(yuǎn)程 Shell。若您在其他系統(tǒng)上執(zhí)行 rsync 命令,為確保使用 ssh 作為遠(yuǎn)程 Shell,請(qǐng)?zhí)砑?-essh 參數(shù)。
- 通常 rsync 命令在后臺(tái)以 cron 任務(wù)形式執(zhí)行,為了避免從終端上輸入口令需要設(shè)置 ssh。ssh 的設(shè)置方法請(qǐng)參考安全登錄守護(hù)進(jìn)程。
使用--exclude/--include選項(xiàng)[ ]
可以使用--exclude 選項(xiàng)排除源目錄中要傳輸?shù)奈募?;同樣地,也可以使?-include 選項(xiàng)指定要傳輸?shù)奈募?
例如:下面的 rsync 命令將 192.168.0.101 主機(jī)上的 /www 目錄(不包含 /www/logs 和 /www/conf 子目錄)復(fù)制到本地的/back up/www/ 。
# rsync -vzrtopg --delete --exclude "logs/" --exclude "conf/" --progress \ backup@192.168.0.101:/www/ /backup/www/
又如:下面的rsync命令僅復(fù)制目錄結(jié)構(gòu)而忽略掉目錄中的文件。
# rsync -av --include '*/' --exclude '*' \ backup@192.168.0.101:/www/ /backup/www-tree/
選項(xiàng)--include 和--exclude 都不能使用間隔符。例如:
--exclude "logs/" --exclude "conf/"
不能寫成
--exclude "logs/ conf/"
參考來(lái)源[ ]
http://www.centospub.com/bbs/forumdisplay.php?fid=10