cp -R 或解壓縮 tar.gz 檔案哪個比較快?

cp -R 或解壓縮 tar.gz 檔案哪個比較快?

我有一些 tar.gz 文件,在 CentOS 系統上總共有很多 GB。大多數 tar.gz 檔案實際上都很小,但帶有圖像的檔案卻很大。一個是7.7G,另一個是4G左右,還有幾個是1G左右。

我已經解壓縮過一次文件,現在我想要所有這些文件的第二個副本。

我認為複製解壓縮的檔案比重新解壓縮它們更快。但我大約 10 分鐘前開始運行 cp -R,到目前為止複製的內容還不到 500M。我確信拆包過程更快。

我對嗎?

如果是這樣,為什麼?解包比簡單地複製現有結構更快似乎沒有意義。

答案1

考慮兩種情況:

  • 複製要求您從磁碟讀取完整檔案並將其寫入磁碟
  • Tar-Gzip 要求您從磁碟讀取較小的文件,解壓縮並將其寫入磁碟。

如果解壓縮過程沒有對 CPU 造成負擔,那麼 I/O 操作自然會受到限制。根據該參數(並且由於在兩種情況下都必須寫入相同的數量),讀取較小的檔案(tar.gz)比讀取較大的檔案花費更少的時間。此外,還可以節省時間,因為讀取單一檔案比讀取許多小檔案更快。

節省的時間取決於讀取 (I/O) 和解壓縮 (CPU) 所需時間之間的差異。因此,對於最小可壓縮的文件(例如已經壓縮的文件,如 mp3、jpg、zip 等),解壓縮所需的時間可能大於讀取操作節省的時間,實際上解壓縮比複製慢。

(值得注意的是,I/O 越慢,使用壓縮檔案節省的時間就越多 - 如果複製操作的來源和目標位於同一實體磁碟上,就會發生這種情況。)

答案2

讀取一個非常小的檔案比讀取一堆大檔案快得多。即使 CPU 必須對其進行解壓縮,這通常也是如此。

相關內容