RYSNC使用说明
一、Rsync命令參數(shù)詳解
??? 在對rsync 服務(wù)器配置結(jié)束以后,下一步就需要在客戶端發(fā)出rsync 命令來實(shí)現(xiàn)將服務(wù)器端的文件備份到客戶端來。rsync 是一個(gè)功能非常強(qiáng)大的工具,其命令也有很多功能特色選項(xiàng),我們下面就對它的選項(xiàng)一一進(jìn)行分析說明。
Rsync 的命令格式可以為以下六種:
| rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]HOST:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... [USER@]HOST::SRC DEST rsync [OPTION]... SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] |
對應(yīng)于以上六種命令格式,rsync 有六種不同的工作模式:
1) 拷貝本地文件。當(dāng)SRC 和DES 路徑信息都不包含有單個(gè)冒號":" 分隔符時(shí)就啟動(dòng)這種工作模式。如:rsync -a /data /backup
2) 使用一個(gè)遠(yuǎn)程shell 程序( 如rsh 、ssh) 來實(shí)現(xiàn)將本地機(jī)器的內(nèi)容拷貝到遠(yuǎn)程機(jī)器。當(dāng)DST 路徑地址包含單個(gè)冒號":" 分隔符時(shí)啟動(dòng)該模式。如:rsync -avz *.c foo:src
3) 使用一個(gè)遠(yuǎn)程shell 程序( 如rsh 、ssh) 來實(shí)現(xiàn)將遠(yuǎn)程機(jī)器的內(nèi)容拷貝到本地機(jī)器。當(dāng)SRC 地址路徑包含單個(gè)冒號":" 分隔符時(shí)啟動(dòng)該模式。如:rsync -avz foo:src/bar /data
4) 從遠(yuǎn)程rsync 服務(wù)器中拷貝文件到本地機(jī)。當(dāng)SRC 路徑信息包含"::" 分隔符時(shí)啟動(dòng)該模式。如:rsync -av root@172.16.78.192::www /databack
5) 從本地機(jī)器拷貝文件到遠(yuǎn)程rsync 服務(wù)器中。當(dāng)DST 路徑信息包含"::" 分隔符時(shí)啟動(dòng)該模式。如:rsync -av /databack root@172.16.78.192::www
6) 列遠(yuǎn)程機(jī)的文件列表。這類似于rsync 傳輸,不過只要在命令中省略掉本地機(jī)信息即可。如:rsync -v rsync://172.16.78.192/www
?
rsync 參數(shù)的具體解釋如下:
?
-v, --verbose 詳細(xì)模式輸出
-q, --quiet 精簡輸出模式
-c, --checksum 打開校驗(yàn)開關(guān),強(qiáng)制對文件傳輸進(jìn)行校驗(yàn)
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD
-r, --recursive 對子目錄以遞歸模式處理
-R, --relative 使用相對路徑信息
-b, --backup 創(chuàng)建備份,也就是對于目的已經(jīng)存在有同樣的文件名時(shí),將老的文件重新命名為~filename 。可以使用--suffix 選項(xiàng)來指定不同的備份文件前綴。
--backup-dir 將備份文件( 如~filename) 存放在在目錄下。
-suffix=SUFFIX 定義備份文件前綴
-u, --update 僅僅進(jìn)行更新,也就是跳過所有已經(jīng)存在于DST ,并且文件時(shí)間晚于要備份的文件。( 不覆蓋更新的文件)
-l, --links 保留軟鏈結(jié)
-L, --copy-links 想對待常規(guī)文件一樣處理軟鏈結(jié)
--copy-unsafe-links 僅僅拷貝指向SRC 路徑目錄樹以外的鏈結(jié)
--safe-links 忽略指向SRC 路徑目錄樹以外的鏈結(jié)
-H, --hard-links 保留硬鏈結(jié)
-p, --perms 保持文件權(quán)限
-o, --owner 保持文件屬主信息
-g, --group 保持文件屬組信息
-D, --devices 保持設(shè)備文件信息
-t, --times 保持文件時(shí)間信息
-S, --sparse 對稀疏文件進(jìn)行特殊處理以節(jié)省DST 的空間
-n, --dry-run 現(xiàn)實(shí)哪些文件將被傳輸
-W, --whole-file 拷貝文件,不進(jìn)行增量檢測
-x, --one-file-system 不要跨越文件系統(tǒng)邊界
-B, --block-size=SIZE 檢驗(yàn)算法使用的塊尺寸,默認(rèn)是700 字節(jié)
-e, --rsh=COMMAND 指定使用rsh 、ssh 方式進(jìn)行數(shù)據(jù)同步
--rsync-path=PATH 指定遠(yuǎn)程服務(wù)器上的rsync 命令所在路徑信息
-C, --cvs-exclude 使用和CVS 一樣的方法自動(dòng)忽略文件,用來排除那些不希望傳輸?shù)奈募?br /> --existing 僅僅更新那些已經(jīng)存在于DST 的文件,而不備份那些新創(chuàng)建的文件
--delete 刪除那些DST 中SRC 沒有的文件
--delete-excluded 同樣刪除接收端那些被該選項(xiàng)指定排除的文件
--delete-after 傳輸結(jié)束以后再刪除
--ignore-errors 及時(shí)出現(xiàn)IO 錯(cuò)誤也進(jìn)行刪除
--max-delete=NUM 最多刪除NUM 個(gè)文件
--partial 保留那些因故沒有完全傳輸?shù)奈募?#xff0c;以是加快隨后的再次傳輸
--force 強(qiáng)制刪除目錄,即使不為空
--numeric-ids 不將數(shù)字的用戶和組ID 匹配為用戶名和組名
--timeout=TIME IP 超時(shí)時(shí)間,單位為秒
-I, --ignore-times 不跳過那些有同樣的時(shí)間和長度的文件
--size-only 當(dāng)決定是否要備份文件時(shí),僅僅察看文件大小而不考慮文件時(shí)間
--modify-window=NUM 決定文件是否時(shí)間相同時(shí)使用的時(shí)間戳窗口,默認(rèn)為0
-T --temp-dir=DIR 在DIR 中創(chuàng)建臨時(shí)文件
--compare-dest=DIR 同樣比較DIR 中的文件來決定是否需要備份
-P 等同于 --partial
--progress 顯示備份過程
-z, --compress 對備份的文件在傳輸時(shí)進(jìn)行壓縮處理
--exclude=PATTERN 指定排除不需要傳輸?shù)奈募J?br /> --include=PATTERN 指定不排除而需要傳輸?shù)奈募J?br /> --exclude-from=FILE 排除FILE 中指定模式的文件
--include-from=FILE 不排除FILE 指定模式匹配的文件
--version 打印版本信息
--address 綁定到特定的地址
--config=FILE 指定其他的配置文件,不使用默認(rèn)的rsyncd.conf 文件
--port=PORT 指定其他的rsync 服務(wù)端口
--blocking-io 對遠(yuǎn)程shell 使用阻塞IO
-stats 給出某些文件的傳輸狀態(tài)
--progress 在傳輸時(shí)現(xiàn)實(shí)傳輸過程
--log-format=formAT 指定日志文件格式
--password-file=FILE 從FILE 中得到密碼
--bwlimit=KBPS 限制I/O 帶寬,KBytes per second
-h, --help 顯示幫助信息
?
以下內(nèi)容出自 “Wandering's Blog ” 博客,請務(wù)必保留此出處http://wandering.blog.51cto.com/467932/105113
二、RYSNC使用說明
?? rysnc同步文件, rsync是一款非常優(yōu)秀的文件同步管理軟件,它也支持多種操作系統(tǒng)平臺,在Unix環(huán)境中,rsync有著卓絕的功績。希望這篇文檔能對一些朋友有所幫助。
1. Install
[url]http://www.samba.org/rsync/[/url]
shell> tar zxvf rsync-x.x.x.tar.gz
shell> cd rsync-x.x.x
shell> ./configure && make && make install
目前大部分 Unix/Linux 默認(rèn)即安裝了 rsync。
2. /etc/rsyncd.conf
?
shell> touch /etc/rsyncd.conf
shell> vi /etc/rsyncd.conf
Edit /etc/rsyncd.conf as below:
?
uid = nobody
gid = nobody
use chroot = no
max connections = 5
pid file = /var/run/rsync.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
?
[<dst-dir>]
path = <dst-dir-fullpath>
ignore errors
read only = no
list = yes
auth users = username
secrets file = /etc/rsyncd.secrets
3. /etc/rsync.secrets
?
shell> echo "jack:password" >> /etc/rsyncd.secrets
shell> chmod 600 /etc/rsyncd.secrets
?
*注:一定要把rsyncd.secrets的權(quán)限設(shè)為600,否則不能正常進(jìn)行身份認(rèn)證。
???? 包括--password-file指向的密碼文件,也必須設(shè)成600權(quán)限。
????
4. Autorun
>>> Idea 1 - only linux <<<
shell> vi /etc/xinetd.d/rsync
?
set DISABLE to yes, the result looks like this:
service rsync
{
??????? disable???????? = no? <---------- change to yes
??????? socket_type???? = stream
??????? wait??????????? = no
??????? user??????????? = root
??????? server????????? = /usr/bin/rsync
??????? server_args???? = --daemon
??????? log_on_failure? += USERID
}
>>> Idea 2 - on openSUSE <<<
shell> echo "/usr/local/bin/rsync --daemon" >> /etc/init.d/boot.local
>>> Idea 3 <<<
?
shell> echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
5. Run daemon
shell> rsync --daemon
?
*注一:在rsync的man手冊的 CONNECTING TO AN RSYNC SERVER 處有提到:
It is also possible to use rsync without a remote shell as the transport. In this case you will connect to a remote? rsync server running on TCP port 873.
?
*注二:在rsync的man手冊的 --port=PORT 選項(xiàng)解釋中有提到:
This specifies an alternate TCP port number to use rather than the default port 873.
6. rsync 命令實(shí)例
6.1 顯示目錄內(nèi)容
命令
------
a) rsync <dst-dir>
b) rsync -r <dst-dir>
c) rsync jack@192.168.0.1::<dst-dir>
d) rsync ssh_user@192.168.0.1:<dst-dir>
命令說明
---------
a) 顯示<dst-dir>目錄 內(nèi)容 (第一層)
b) 遞歸顯示<dst-dir>目錄 內(nèi)容
c) 顯示遠(yuǎn)程主機(jī)<dst-dir>目錄內(nèi)容
?? *注1:端口模式, 基于rsync用戶的身份驗(yàn)證
?? *注2:rsync server上的目錄必須具有xx7的權(quán)限.
d) 查看 遠(yuǎn)程 主機(jī)<dst-dir>目錄 內(nèi)容
?? *注1:remote shell模式, 通過ssh連接的基于系統(tǒng)本地用戶的身份驗(yàn)證
?? *注2:這里只使用了一個(gè)冒號(:),同時(shí)用戶名是遠(yuǎn) 程主機(jī) 的ssh用戶,密碼也是ssh用戶對應(yīng)的密碼。
?? *注3:使用"<dst-dir>",則列出<dst-dir>文件夾本身的信息。若要列出<dst-dir>文件夾內(nèi)容,應(yīng)使用"<dst-dir>/"。
??
參數(shù)說明
---------
-r????????? 對目錄進(jìn)行遞歸操作
??
6.2 本地目錄之間同步
命令
------
a) rsync -av? --progress <src-dir>/ <dst-dir>???????????? *** 注意(/) ***
b) rsync -av? --progress <src-dir>? <dst-dir>
c) rsync -avu --progress --delete <src-dir>/? <dst-dir>
d) rsync -av? --progress --temp-dir=/tmp <src-dir>/ <dst-dir>
命令說明
---------
a) 同步src-dir目錄下所有文件到dst-dir目錄下
b) 同步src-dir目錄下所有文件到dst-dir/src-dir目錄下
c) 對src-dir目錄內(nèi)容向dst-dir目錄下進(jìn)行差異更新,有增加/更新則添加替換,有減少則對其刪減
d) 比a)多了 --temp-dir=/tmp,即指定/tmp為臨時(shí)交換區(qū),這樣可以避免因目標(biāo)目錄空間不夠引起的無法同步文件的錯(cuò)誤。
參數(shù)說明
---------
-a????????? 相當(dāng)于 -rlptgoD 的集合
-u????????? 等同于 --update,在目標(biāo)文件比源文件新的情況下不更新
-v????????? 顯示同步的文件
--progress? 顯示文件同步時(shí)的百分比進(jìn)度、傳輸速率
--delete??? 刪除目標(biāo)目錄中多于源目錄的文件
6.3 異地主機(jī)之間同步
命令
------
a) rsync -avz? --progress <src-dir> jack@192.168.0.1::<dst-dir>/
b) rsync -avz? --progress <src-dir> jack@192.168.0.1::<dst-dir>/ --password-file=/home/jack/rsync.jack
c) rsync -avuz? --progress --delete <src-dir> jack@192.168.0.1::<dst-dir>/ --password-file=/home/jack/rsync.jack
d) rsync -avz? --progress jack@192.168.0.1::<dst-dir>/<src-dir> <dst-dir>
命令說明
---------
a) 同步本地<src-dir>目錄的內(nèi)容到遠(yuǎn)程主機(jī)192.168.0.1的<dst-dir>目錄下,jack是rsync數(shù)據(jù)庫用戶(參見3. /etc/rsync.secrets)
b) 通過自動(dòng)讀取用戶密碼而實(shí)現(xiàn)非交互登錄文件同步
c) 較b)多了-u和--delete
d) 同步遠(yuǎn)程主機(jī)內(nèi)容到本地目錄
參數(shù)說明
---------
-z??????????????? 等同于 --compress,對傳輸?shù)奈募嚎s,這對節(jié)約網(wǎng)絡(luò)帶寬或在網(wǎng)絡(luò)資源緊張的情況下非常有用
--password-file?? 引用192.168.0.1上rsync用戶jack口令的本地文件,創(chuàng)建方法如下
????????????????? shell> echo "jackpwd" >> /home/jack/ rsync.jack
????????????????? shell> chown jack:wheel /home/jack/ rsync.jack
????????????????? shell> chmod 600 /home/jack/ rsync.jack
?
?
總結(jié)
- 上一篇: DNSSEC 原理、配置与布署简介
- 下一篇: Bind 配置非递归服务器