2010-11-08 81 views
1

爲什麼我不能相信rsync和cp一樣快? (我忽略了可忽略的開銷差異。)對於已更改的文件,rsync是否真的更快?

在我看來,對於沒有內容差異但改變時間戳的文件,rsync相當慢。

如果我做一個文件中:cp -a testfile的-100M destfile

然後我rsync的他們,我得到你所期望的:

$的rsync -av testfile的-100M destfile 發送增量文件名單

發送56個字節接收12個字節8.00字節/秒 總規模爲104857600加速是1542023.53

但是,這只是因爲Rsync是檢查的大小和時間戳並跳過該文件。如果我只是改變時間戳呢?

$觸摸testfile的-100M

$ rsync的-av testfile的-100M destfile發送增量文件列表 testfile的-100M

發送104870495個字節接收31個字節113804.15字節/秒 總大小被104857600加速是1.00

另請注意,即使加速比爲1,即使內容完全相同,初始拷貝也要比最終的rsync完成1/4的時間。那麼這裏發生了什麼?這只是比較的所有開銷嗎?

如果是這種情況,那麼rsync何時會提供性能優勢?只有當兩邊文件完全相同時

回答

0

看來答案是,rsync的做,以保持一致的狀態的文件,而不是在「部分 - 轉移」狀態,同時經營一些額外的步驟。使用--inplace選項可消除此開銷。

1

當源和目標都是本地安裝的文件系統時,如果時間戳或大小不匹配,rsync只會複製文件。 Rsync贏得您擁有較小差異的大文件的位置,並且它們位於由低帶寬鏈接分隔的機器上。

編輯:由於有人覺得需要downvote這個古老的答案...至於爲什麼rsync本地文件可能比cp慢,似乎沒有任何好的理由。

+0

謝謝。這並不能解釋爲什麼cp比本地磁盤上的rsync快4倍。對不起,我可能沒有明確表達這一點......我想知道爲什麼我不能相信rsync的速度和cp一樣快(首先檢查文件時有一些小的開銷)。當我複製另一個文件時,我可能不得不測試cp是否減速。也許性能問題是由於在複製新文件之前斷開舊文件的鏈接。 – Angelo 2012-06-08 02:53:10

0

有趣的是,對於我來說,rsync比cp複製到外部USB驅動器快4倍。

2

對於本地文件,如果大小或mtime已更改,rsync默認情況下僅複製整個事物而不使用其delta算法。您可以使用--no-whole-file選項關閉此選項,但對於本地副本,這通常會較慢。

對於觸摸一個文件,而不改變它的具體情況:

  • 如果你給--size-only選項,它會假設具有相同大小的文件不變。

  • 如果您提供--checksum選項,它將在複製文件之前首先散列該文件以查看是否有任何更改。

+0

即使使用「--size-only」,rsync似乎也要永遠*構建其增量文件列表。爲什麼?我可以手動檢查文件大小,哪些文件已經更改*更快*浪費時間在做什麼,以及如何關閉這些奇特功能?編輯:啊,沒關係,我有意外設置了'c'標誌。如果沒有校驗和,這個速度非常快。 – 2018-03-08 13:02:48