rsync指令 - rsync教學




複製或rsync命令 (5)

以下命令按預期工作...

cp -ur /home/abc/* /mnt/windowsabc/

rsync有什麼優勢嗎? 是否有更好的方法來保持每24小時同步備份文件夾?


Rsync更好,因為它只會復制更新文件的更新部分,而不是整個文件。 如果需要,它還使用壓縮和加密。 看看這個tutorial


rsync不一定更有效,因為它執行的文件和塊的清單更加詳細。 該算法非常出色,但您需要了解您的問題才能知道它是否真的是最佳選擇。

在一個非常大的文件系統(比如數千或數百萬個文件)中,文件往往被添加但沒有更新,“cp -u”可能會更有效。 cp決定僅複製元數據,並且可以簡單地進行複制業務。

請注意,您可能需要一些緩衝,例如使用tar而不是直接cp,具體取決於文件​​的大小,網絡性能,其他磁盤活動等。我發現以下想法非常有用:

tar cf - . | tar xCf directory -

元數據本身實際上可能成為非常大(集群)文件系統上的重要開銷,但rsync和cp將共享此問題。

rsync似乎經常是首選工具(在通用應用程序中是我通常的默認選擇),但可能有很多人盲目地使用rsync而不考慮它。


寫入的命令將創建具有當前日期和時間戳的新目錄和文件,並將您自己作為所有者。 如果您是系統中唯一的用戶並且每天都這樣做,那麼這可能並不重要。 但是如果保留這些屬性對您很重要,您可以使用修改命令

cp -pur /home/abc/* /mnt/windowsabc/

-p將保留文件的所有權,時間戳和模式。 這可能非常重要,具體取決於您要備份的內容。

使用rsync的替代命令是

rsync -avh /home/abc/* /mnt/windowsabc

使用rsync,-a表示“archive”,它保留了上面提到的所有屬性。 -v表示“詳細”,它只列出它在運行時對每個文件執行的操作。 -z留在這裡用於本地副本,但是用於壓縮,如果您通過網絡備份,這將有所幫助。 最後,-h告訴rsync報告人類可讀格式的大小,如MB,GB等。

出於好奇,我運行了一個副本來填充系統並避免在第一次運行時出現偏差,然後我在從內部SSD驅動器到USB連接的HDD的1GB文件的測試運行中計時以下。 這些只是複製到空目標目錄。

cp -pur    : 19.5 seconds
rsync -ah  : 19.6 seconds
rsync -azh : 61.5 seconds

這兩個命令似乎大致相同,雖然壓縮和解壓縮顯然會對帶寬不是瓶頸的系統造成負擔。


對於本地副本,rsync的唯一優點是,如果文件已存在於目標目錄中,它將避免複製。 “已存在”的定義是(a)相同的文件名(b)相同的大小(c)相同的時間戳。 (也許是同一所有者/團體;我不確定......)

“rsync算法”非常適合通過慢速網絡鏈接對文件進行增量更新,但它對於本地副本不會佔用太多,因為它需要讀取現有(部分)文件來運行它的“差異”計算。

因此,如果您經常運行此類命令,並且更改的文件集相對於文件總數較小,您應該會發現rsync比cp快。 (另外rsync有一個你可能會覺得有用的--delete選項。)


這不是一個更有效的問題。

命令'rsync'和'cp'不等同,實現了不同的目標。

1- rsync可以保留創建現有文件的時間。 (使用-a選項)
2- rsync將使用本地套接字或網絡套接字運行多進程和傳輸。 (即將自己分成多個進程)
3-多重處理和線程化會在復制大量小文件時提高吞吐量,甚至可以使用多個較大的文件。

所以底線是rsync用於大數據,而cp用於較小的本地複制。 (MB到小GB範圍)。 當您開始進入多個GB或TB範圍時,請使用rsync。 當然還有網絡副本,rsync。