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