linux rsync同步命令

1. rsync 介紹

rsync命令是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具噪馏,可通過(guò)LAN/WAN快速同步多臺(tái)主機(jī)間的文件。rsync使用所謂的“rsync算法”來(lái)使本地和遠(yuǎn)程兩個(gè)主機(jī)之間的文件達(dá)到同步瓶颠,這個(gè)算法只傳送兩個(gè)文件的不同部分,而不是每次都整份傳送粹淋,因此速度相當(dāng)快。 rsync是一個(gè)功能非常強(qiáng)大的工具屋匕,其命令也有很多功能特色選項(xiàng)。

2. rsync使用

【不帶任何選項(xiàng)】
rsync main.c machineB:/home/userB

1 只要目的端的文件內(nèi)容和源端不一樣过吻,就會(huì)觸發(fā)數(shù)據(jù)同步蔗衡,rsync會(huì)確保兩邊的文件內(nèi)容一樣。
2 但rsync不會(huì)同步文件的“modify time”绞惦,凡是有數(shù)據(jù)同步的文件,目的端的文件的“modify time”總是會(huì)被修改為最新時(shí)刻的時(shí)間樊展。
3 rsync不會(huì)太關(guān)注目的端文件的rwx權(quán)限堆生,如果目的端沒(méi)有此文件,那么權(quán)限會(huì)保持與源端一致淑仆;如果目的端有此文件,則權(quán)限不會(huì)隨著源端變更墩弯。
4 只要rsync有對(duì)源文件的讀權(quán)限,且對(duì)目標(biāo)路徑有寫權(quán)限渔工,rsync就能確保目的端文件同步到和源端一致桥温。
5 rsync只能以登陸目的端的賬號(hào)來(lái)創(chuàng)建文件,它沒(méi)有能力保持目的端文件的輸主和屬組和源端一致侵浸。(除非你使用root權(quán)限,才有資格要求屬主一致区端、屬組一致)

【-t選項(xiàng)】
 rsync -t main.c machineB:/home/userB

1 使用-t選項(xiàng)后澳腹,rsync總會(huì)想著一件事杨何,那就是將源文件的“modify time”同步到目標(biāo)機(jī)器悔政。
2 帶有-t選項(xiàng)的rsync,會(huì)變得更聰明些槽地,它會(huì)在同步前先對(duì)比兩邊文件的時(shí)間戳和文件大小,如果一致捌蚊,則就認(rèn)為兩邊文件一樣近弟,對(duì)此文件就不再采取更新動(dòng)作了。
3 因?yàn)閞sync的聰明祷愉,也會(huì)反被聰明誤。如果目的端的文件的時(shí)間戳赴涵、大小和源端完全一致,但是內(nèi)容恰巧不一致時(shí)髓窜,rsync是發(fā)現(xiàn)不了的欺殿。這就是傳說(shuō)中的“坑”!
4 對(duì)于rsync自作聰明的情況程拭,解決辦法就是使用-I選項(xiàng)。

【-I選項(xiàng)】

rsync -I main.c machineB:/home/userB

1 -I選項(xiàng)會(huì)讓rsync變得很乖很老實(shí)哺壶,它會(huì)挨個(gè)文件去發(fā)起數(shù)據(jù)同步蜒谤。
2 -I選項(xiàng)可以確保數(shù)據(jù)的一致性鳍徽,代價(jià)便是速度上會(huì)變慢,因?yàn)槲覀兎艞壛恕皅uick check”策略阶祭。(quick check策略,就是先查看文件的時(shí)間戳和文件大小濒募,依次先排除一批認(rèn)為相同的文件)
3 無(wú)論情況如何,目的端的文件的modify time總會(huì)被更新到當(dāng)前時(shí)刻瑰剃。

【-v選項(xiàng)】

rsync -vI main.c machineB:/home/userB       
//就是讓rsync輸出更多的信息,增加越多的v就可以獲取越多的日志信息      

【多個(gè)選項(xiàng)】

 rsync -rtv dist/ root@127.0.0.1:/usr/local/nginx/html/ops
//eg: 將本地代碼發(fā)布到遠(yuǎn)程服務(wù)器
//將同級(jí)文件夾dist下面的文件同步到遠(yuǎn)程服務(wù)的ops文件夾下面

e.g.: publish.sh文件

# 這是一個(gè)發(fā)布前端代碼的腳本  只要執(zhí)行 bash publish.sh test 發(fā)布代碼到測(cè)試服務(wù)器的對(duì)應(yīng)文件夾下面

#! /bin/bash

# 發(fā)布之前的打包
npm run build
# env變量保存 bash publish.sh xxx 第一個(gè)參數(shù)
env=$1
case $env in
    test)
        serverPath1=root@127.0.0.1:/usr/local/nginx/html/ops
        ;;
    regress)
        zipsTarget1=""
        ;;
     prd)
        serverPath1='正式環(huán)境地址'
        ;;
     *)
        echo "Need to specify env (test | regress | prd)"
        exit -1;
        ;;
esac

# serverPath1 長(zhǎng)度不為0
if [ ! -z serverPath1 ] ; then
    rsync -rtv dist/ $serverPath1 ;
else
    echo rsync  not excuted because there is no remote zipsTarget1 address for $env environment ;
fi

echo "Congratulation粤剧!publish success!"

3. rsync參數(shù)的具體解釋:

-v, --verbose 詳細(xì)模式輸出 -q, --quiet 精簡(jiǎn)輸出模式 -c, --checksum 打開(kāi)校驗(yàn)開(kāi)關(guān)抵恋,強(qiáng)制對(duì)文件傳輸進(jìn)行校驗(yàn) -a, --archive 歸檔模式,表示以遞歸方式傳輸文件弧关,并保持所有文件屬性唤锉,等于-rlptgoD -r, --recursive 對(duì)子目錄以遞歸模式處理 -R, --relative 使用相對(duì)路徑信息 -b, --backup 創(chuàng)建備份,也就是對(duì)于目的已經(jīng)存在有同樣的文件名時(shí)腌紧,將老的文件重新命名為~filename『排撸可以使用--suffix選項(xiàng)來(lái)指定不同的備份文件前綴。 --backup-dir 將備份文件(如~filename)存放在在目錄下猫胁。 -suffix=SUFFIX 定義備份文件前綴 -u, --update 僅僅進(jìn)行更新跛锌,也就是跳過(guò)所有已經(jīng)存在于DST,并且文件時(shí)間晚于要備份的文件髓帽。(不覆蓋更新的文件) -l, --links 保留軟鏈結(jié) -L, --copy-links 想對(duì)待常規(guī)文件一樣處理軟鏈結(jié) --copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹(shù)以外的鏈結(jié) --safe-links 忽略指向SRC路徑目錄樹(shù)以外的鏈結(jié) -H, --hard-links 保留硬鏈結(jié) -p, --perms 保持文件權(quán)限 -o, --owner 保持文件屬主信息 -g, --group 保持文件屬組信息 -D, --devices 保持設(shè)備文件信息 -t, --times 保持文件時(shí)間信息 -S, --sparse 對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間 -n, --dry-run現(xiàn)實(shí)哪些文件將被傳輸 -W, --whole-file 拷貝文件郑藏,不進(jìn)行增量檢測(cè) -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)忽略文件俱饿,用來(lái)排除那些不希望傳輸?shù)奈募?--existing 僅僅更新那些已經(jīng)存在于DST的文件塌忽,而不備份那些新創(chuàng)建的文件 --delete 刪除那些DST中SRC沒(méi)有的文件 --delete-excluded 同樣刪除接收端那些被該選項(xiàng)指定排除的文件 --delete-after 傳輸結(jié)束以后再刪除 --ignore-errors 及時(shí)出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除 --max-delete=NUM 最多刪除NUM個(gè)文件 --partial 保留那些因故沒(méi)有完全傳輸?shù)奈募允羌涌祀S后的再次傳輸 --force 強(qiáng)制刪除目錄枣购,即使不為空 --numeric-ids 不將數(shù)字的用戶和組ID匹配為用戶名和組名 --timeout=TIME IP超時(shí)時(shí)間装盯,單位為秒 -I, --ignore-times 不跳過(guò)那些有同樣的時(shí)間和長(zhǎng)度的文件 --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中的文件來(lái)決定是否需要備份 -P 等同于 --partial --progress 顯示備份過(guò)程 -z, --compress 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理 --exclude=PATTERN 指定排除不需要傳輸?shù)奈募J?--include=PATTERN 指定不排除而需要傳輸?shù)奈募J?--exclude-from=FILE 排除FILE中指定模式的文件 --include-from=FILE 不排除FILE指定模式匹配的文件 --version 打印版本信息 --address 綁定到特定的地址 --config=FILE 指定其他的配置文件澜掩,不使用默認(rèn)的rsyncd.conf文件 --port=PORT 指定其他的rsync服務(wù)端口 --blocking-io 對(duì)遠(yuǎn)程shell使用阻塞IO -stats 給出某些文件的傳輸狀態(tài) --progress 在傳輸時(shí)現(xiàn)實(shí)傳輸過(guò)程 --log-format=formAT 指定日志文件格式 --password-file=FILE 從FILE中得到密碼 --bwlimit=KBPS 限制I/O帶寬芹敌,KBytes per second -h, --help 顯示幫助信息 一般同步傳輸目錄都使用azv選項(xiàng).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氏捞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子液茎,更是在濱河造成了極大的恐慌辞嗡,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栋烤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡明郭,警方通過(guò)查閱死者的電腦和手機(jī)丰泊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沉唠,“玉大人,你說(shuō)我怎么就攤上這事满葛“涨” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵锄贷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我谊却,道長(zhǎng),這世上最難降的妖魔是什么炎辨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任聪姿,我火速辦了婚禮,結(jié)果婚禮上破喻,老公的妹妹穿的比我還像新娘。我一直安慰自己曹质,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布羽德。 她就那樣靜靜地躺著顶籽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坏为。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,736評(píng)論 1 312
  • 那天匀伏,我揣著相機(jī)與錄音蝴韭,去河邊找鬼。 笑死榄鉴,一個(gè)胖子當(dāng)著我的面吹牛蛉抓,可吹牛的內(nèi)容都是我干的剃诅。 我是一名探鬼主播,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼笑跛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼聊品!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起翻屈,我...
    開(kāi)封第一講書(shū)人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芥颈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爬坑,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涂臣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了署辉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哭尝,死狀恐怖剖煌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耕姊,我是刑警寧澤,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布尤泽,位于F島的核電站,受9級(jí)特大地震影響坯约,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜闹丐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧氏身,春花似錦、人聲如沸蛋欣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至尚猿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凿掂,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工踪少, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人援奢。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓忍捡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親锉罐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容