Linux 使用 rsync 同步檔案

2021-10-07 00:18:44 字數 4251 閱讀 3586

rsync是unix下的一款應用軟體,它能同步更新兩處計算機的檔案與目錄,並適當利用差分編碼以減少資料傳輸量。rsync中的一項同類軟體不常見的重要特性是每個目標的映象只需傳送一次。rsync可以拷貝/顯示目錄內容,以及拷貝檔案,並可選壓縮以及遞迴拷貝。

有的版本的 linux 可能已經預裝了 rsync,可以輸入rsync測試,如果出現 rsync 相關的使用說明就可以不用再安裝。如果出現-bash: /usr/bin/rsync: no such file or directory之類的提示,說明沒有安裝 rsync。

centos/fedora 安裝 rsync:

yum install -y rsync
ubuntu/debian 安裝 rsync:

apt install -y rsync
安裝完成後輸入rsync可以檢視選項說明。

rsync 可以用於多台伺服器之間同步檔案,也可以在本機的不同目錄之間同步檔案。

下面把本機的乙個檔案拷貝到本機的另乙個目錄中:

rsync /home/hello.txt /root/hello.txt
上面把home目錄中的hello.txt拷貝到了root目錄中。rsync 的使用和cp命令差不多。

下面把本機home目錄中的hello.txt拷貝到另一台伺服器的home目錄中:

rsync /home/hello.txt 172.93.47.76:/home/hello.txt
不同裝置之間同步檔案 檔案路徑前需要加ip,ip 和路徑之間用:分隔。不同裝置之間同步檔案需要輸入密碼才能同步。

下面把另一台伺服器中的home目錄下的mwordstar.zip拷貝到當前伺服器的home目錄下:

rsync 172.93.47.76:/home/mwordstar.zip /home/mwordstar.zip
下面是 rsync 的一些常用選項:

選項說明

-v顯示詳細資訊

-r:遞迴目錄

-l同步軟鏈結

-p保持檔案許可權

-t同步檔案的修改時間

-g保持檔案的所屬組

-o保持檔案的所屬使用者

-d保持裝置檔案的資訊

-a多個選項集,包含了上面的-rlptgod

-z傳輸之前對檔案進行壓縮處理

--partial允許斷點續傳

--progress顯示傳輸進度

-p允許斷點續傳和顯示傳輸進度,相當於同時包含了上面的-partial-progress

--delete在同步檔案的時候刪除多餘的檔案

--delete-after同步完成後刪除多餘的檔案

--bwlimit限制傳輸速度

--include在同步多個檔案或目錄時可以指定需要同步的檔案

--exclude在同步多個檔案或目錄時可以指定不需要同步的檔案

下面是一些選項的詳細說明:

-v選項主要就是顯示詳細的統計資訊,如下:

rsync -v mwordstar.zip 172.93.47.76:/home/mwordstar.zip
資訊統計如下:

mwordstar.zip

sent 1,198 bytes received 1,703 bytes 341.29 bytes/sec

total size is 194,160 speedup is 66.93

-r的功能就是拷貝整個目錄,包括目錄下的所有檔案和目錄。如果不加-r在拷貝目錄的時候會提示skipping directory dir,也無法拷貝成功。

skipping non-regular file ***

其中的***就是跳過的檔名。

-p的功能就是顯示傳輸進度和允許斷點續傳。下面是乙個包含-p選項被強制中斷傳輸的檔案:

rsync: [sender] write error: broken pipe (32)中斷前的進度是9%,如果接收方未完成的檔案沒有刪除的話,下次再傳這個檔案還能從9%的地方開始傳輸。

--delete的功能是在同步的時候刪除多餘檔案,需要和-r選項一起使用。

下面讓home目錄和downloads目錄同步,home包含的檔案如下:

`-- hello.txtdownloads目錄包含的檔案如下:

.

└── googledrivelogo.jpeg

使用--delete選項同步:

rsync -r --delete --progress /home/ 172.93.47.76:/downloads/
同步後downloads目錄包含的檔案如下:

└── hello.txtdownloads中包含的檔案已經和home一樣,多餘的googledrivelogo.jpeg已經被刪除。

--delete-after選項有點類似於--delete,都是刪除多餘的檔案,不過--delete-after是在傳輸完成後才會刪除多餘檔案,--delete在傳輸之前就會刪除多餘檔案。

使用--delete-after選項 如果中途傳輸中斷了檔案也不會被刪除。

--bwlimit選項的功能是限制傳輸速度。對於伺服器來說,限制傳輸速度可以降低傳輸檔案時對網路的影響。

用法如下:

rsync --bwlimit=100 --progress /home/video.mp4 172.93.47.76:/downloads/video.mp4
上面的傳輸速度會被限制到 100k 每秒。

--include的功能是指定需要同步的檔案,--exclude的功能是指定不需要同步的檔案。這兩個選項可以一起使用。

用法如下:

rsync -r --include 'h*' --exclude '*' /home/ 172.93.47.76:/downloads/
上面只會同步以h開頭的檔案。

Linux下使用rsync同步檔案

遇到的問題是幾台遊戲伺服器,有一台新的伺服器之前已經copy linux的scp命令 過檔案上去,但在測試的過程中發現還是無法正常不顯示出來,然後用httpwatch去分析請求的資源,發現有乙個請求的位址是404 檔案不存在 然後ssh登入上去,找到指定目錄,發現確實是沒有這個檔案。為了不至於再co...

Linux 命令 rsync 檔案同步

1 rsync src dest 2 rsync src user host dest rsync home zhangting 10.1.2.121 home v,verbose 詳細模式輸出。q,quiet 精簡輸出模式。c,checksum 開啟校驗開關,強制對檔案傳輸進行校驗。a,archi...

rsync 同步目錄到linux

目前因為被拉壯丁,接手乙個c c 的專案,作為乙個寫j a 的垃圾,搭建c c 的環境完全是懵逼的,並且為了貼近真是的執行環境,果斷使用虛擬機器搭建了乙個centos7的環境。所以,目前的操作是,在windows下進行 的編寫,然後想通過同步到虛擬機器上,進行打包和測試。哦豁,問我為啥不使用ide工...