国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

linux rsync同步命令(值得收藏)

2020-07-27 19:03:49
字體:
來源:轉載
供稿:網友

 如果你是一位運維工程師,你很可能會面對幾十臺、幾百臺甚至上千臺服務器,除了批量操作外,環境同步、數據同步也是必不可少的技能。

說到“同步”,不得不提的利器就是rsync,今天就來說說我從這個工具中看到的同步的藝術。

[不帶任何選項]

我們經常這樣使用rsync:

復制代碼 代碼如下:

$ rsync main.c machineB:/home/userB

1 只要目的端的文件內容和源端不一樣,就會觸發數據同步,rsync會確保兩邊的文件內容一樣。

2 但rsync不會同步文件的“modify time”,凡是有數據同步的文件,目的端的文件的“modify time”總是會被修改為最新時刻的時間。

3 rsync不會太關注目的端文件的rwx權限,如果目的端沒有此文件,那么權限會保持與源端一致;如果目的端有此文件,則權限不會隨著源端變更。

4 只要rsync有對源文件的讀權限,且對目標路徑有寫權限,rsync就能確保目的端文件同步到和源端一致。

5 rsync只能以登陸目的端的賬號來創建文件,它沒有能力保持目的端文件的輸主和屬組和源端一致。(除非你使用root權限,才有資格要求屬主一致、屬組一致)

[-t選項]

我們經常這樣使用-t選項:

復制代碼 代碼如下:

$ rsync -t main.c machineB:/home/userB

1 使用-t選項后,rsync總會想著一件事,那就是將源文件的“modify time”同步到目標機器。

2 帶有-t選項的rsync,會變得更聰明些,它會在同步前先對比兩邊文件的時間戳和文件大小,如果一致,則就認為兩邊文件一樣,對此文件就不再采取更新動作了。

3 因為rsync的聰明,也會反被聰明誤。如果目的端的文件的時間戳、大小和源端完全一致,但是內容恰巧不一致時,rsync是發現不了的。這就是傳說中的“坑”!

4 對于rsync自作聰明的情況,解決辦法就是使用-I選項。

[-I選項]

我們經常這樣使用-I選項:

復制代碼 代碼如下:

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

1 -I選項會讓rsync變得很乖很老實,它會挨個文件去發起數據同步。

2 -I選項可以確保數據的一致性,代價便是速度上會變慢,因為我們放棄了“quick check”策略。(quick check策略,就是先查看文件的時間戳和文件大小,依次先排除一批認為相同的文件)

3 無論情況如何,目的端的文件的modify time總會被更新到當前時刻。

【-v選項】

這個選項,簡單易懂,就是讓rsync輸出更多的信息,我們可以舉一個例子:

$ rsync -vI main.c machineB:/home/userB                          main.csent 81 bytes received 42 bytes 246.00 bytes/sectotal size is 11 speedup is 0.09

你增加越多的v,就可以獲得越多的日志信息。

$ rsync -vvvvt abc.c machineB:/home/userB cmd= machine=machineB user= path=/home/userBcmd[0]=ssh cmd[1]=machineB cmd[2]=rsync cmd[3]=--server cmd[4]=-vvvvte. cmd[5]=. cmd[6]=/home/userB opening connection using: ssh machineB rsync --server -vvvvte. . /home/userB note: iconv_open("ANSI_X3.4-1968", "ANSI_X3.4-1968") succeeded.(Client) Protocol versions: remote=28, negotiated=28(Server) Protocol versions: remote=30, negotiated=28[sender] make_file(abc.c,*,2)[sender] flist start=0, used=1, low=0, high=0[sender] i=0 abc.c mode=0100664 len=11 flags=0send_file_list donefile list sentsend_files startingserver_recv(2) starting pid=31885recv_file_name(abc.c)received 1 names[receiver] i=0  abc.c mode=0100664 len=11recv_file_list doneget_local_name count=1 /home/userBrecv_files(1) startinggenerator starting pid=31885 count=1delta transmission enabledrecv_generator(abc.c,0)abc.c is uptodategenerate_files phase=1send_files phase=1recv_files phase=1generate_files phase=2send files finishedtotal: matches=0 hash_hits=0 false_alarms=0 data=0generate_files finishedrecv_files finishedclient_run waiting on 14318sent 36 bytes received 16 bytes 104.00 bytes/sectotal size is 11 speedup is 0.21_exit_cleanup(code=0, file=main.c, line=1031): entered_exit_cleanup(code=0, file=main.c, line=1031): about to call exit(0)

[-z選項]

這是個壓縮選項,只要使用了這個選項,rsync就會把發向對端的數據先進行壓縮再傳輸。對于網絡環境較差的情況下建議使用。

一般情況下,-z的壓縮算法會和gzip的一樣。

[-r選項]

我們在第一次使用rsync時,往往會遇到這樣的

主站蜘蛛池模板: 长兴县| 满城县| 岗巴县| 武宁县| 双峰县| 房产| 阳信县| 红桥区| 常宁市| 定远县| 赤壁市| 博乐市| 吕梁市| 临武县| 祁连县| 乌鲁木齐县| 张家界市| 泽库县| 蒙自县| 温泉县| 临桂县| 霞浦县| 霍林郭勒市| 宝坻区| 江西省| 康定县| 龙岩市| 清镇市| 兴化市| 文登市| 绥德县| 沁源县| 天门市| 长葛市| 长宁县| 新巴尔虎右旗| 江油市| 炎陵县| 全椒县| 福贡县| 扎赉特旗|