Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

zstd 其實不支援多檔案解壓縮

Posted on 2025 年 3 月 6 日2025 年 3 月 6 日 By 日落 在〈zstd 其實不支援多檔案解壓縮〉中尚無留言

zstd 是由 Facebook 開發的一個壓縮演算法,由於壓縮率、花費時間介於 gzip 與 bzip2 之間,且支援多執行緒,近期很紅。

稍早看了 zstd 的 manual,有個 -r 參數的說明:

-r: operate recursively on directories

想說支援巢狀檔案結構,解壓縮會輕鬆一些,就直接使用 -r 來備份整個目錄:

tree -a www
www
├── docker-compose.yaml
└── .env

zstd -T4 -r www/ -o web-backup.zst

結果在解壓縮時發現問題,解壓縮以後不會還原資料結構,只會變成一個包含所有檔案內容的檔案:

unzstd web-backup.zst
web-backup.zst      : 27 bytes

ls
web-backup

查了一下資料,發現 Github 上有 issue 卻被 closed,而 StackExchange 上的文章也說明無法還原目錄結構。

如果你用了 zstd -r 的話,請注意資料可能無法復原,還是使用 tar 比較保險。


tar 使用 -z 時,會使用 gzip 壓縮檔案內容,指令大概長這樣:

tar zcvf web-backup.tgz www/

若要使用 bzip2 時,參數則為 -j:

tar jcvf web-backup.tbz www/

若想要使用 zstd,可以透過 tar -I 的參數來指定要使用的壓縮工具:

  • 使用 pigz 來壓縮:tar -I pigz -cvf web-backup.tgz www/
  • 使用 lbzip2 來壓縮:tar -I lbzip2 -cvf web-backup.tbz www/
  • 使用 zstd 則是:tar -I zstd -cvf web-backup.tbz www/

zstd 預設只會使用 1 個執行緒來壓縮,若要支援多個執行緒記得加上 -T 參數:

tar -I 'zstd -T4' -cvf web-backup.tbz www/
Tags:Linux

文章導覽

Previous Post: 2024 年回顧
Next Post: 建立安全的密碼需要思考的一些問題

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.