內容

名稱

streamzip - 從 stdin 建立一個 zip 檔案

語法

producer | streamzip [opts] | consumer
producer | streamzip [opts] -zipfile=output.zip

說明

此程式會從 stdin 讀取資料,將其壓縮成一個 zip 容器,並預設將一個串流 zip 檔案寫入 stdout。不會建立任何暫存檔。

寫入 stdout 的 zip 容器必須以串流格式寫入。大多數讀取 Zip 檔案的程式都能處理串流 zip 檔案,但如果互通性很重要,而且您的工作流程允許您將 zip 檔案直接寫入磁碟,您可以使用 zipfile 選項建立一個非串流 zip 檔案。

選項

-zip64

建立一個符合 Zip64 的 zip 容器。如果輸入大於 4Gig,請使用此選項。

預設為停用。

-zipfile=F

將 zip 容器寫入檔案名稱 F

使用 Stream 選項強制建立串流 zip 檔案。

-member-name=M

此選項用於命名 zip 容器中的「檔案」。

預設為「-」。

-stream

寫入 stdout 時忽略。

如果指定了 zipfile 選項,包括此選項將觸發建立串流 zip 檔案。

預設:寫入 stdout 時始終啟用,否則停用。

-method=M

使用 M 方法壓縮。

有效的 method 名稱為

* store    Store without compression
* deflate  Use Deflate compression [Deflault]
* bzip2    Use Bzip2 compression
* lzma     Use LZMA compression
* xz       Use xz compression
* zstd     Use Zstandard compression

請注意,Lzma 壓縮需要安裝 IO::Compress::Lzma

請注意,Zstd 壓縮需要安裝 IO::Compress::Zstd

預設為 deflate

-0, -1, -2, -3, -4, -5, -6, -7, -8, -9

設定 deflate 的壓縮層級。其他所有壓縮方法都忽略此設定。

-0 表示不壓縮,-9 表示最大壓縮。

預設為 6

-version

顯示版本號碼

-help

顯示說明

範例

從 stdin 讀取資料建立 zip 檔案

$ echo Lorem ipsum dolor sit | perl ./bin/streamzip >abcd.zip

使用標準 unzip 工具檢查 abcd,zip 的內容

Archive:  abcd.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       22  2021-01-08 19:45   -
---------                     -------
       22                     1 file

請注意,Name 如何設定為 -。這是幾個 zip 工具的預設值,其中未提供成員名稱。

如果您想要明確命名檔案,請使用 -member-name 選項,如下所示

$ echo Lorem ipsum dolor sit | perl ./bin/streamzip -member-name latin >abcd.zip

$ unzip -l abcd.zip
Archive:  abcd.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       22  2021-01-08 19:47   latin
---------                     -------
       22                     1 file

何時寫入串流 zip 檔案

在無法在檔案中向前/向後搜尋的情況下,串流 zip 檔案很有用。

一個很好的例子是,當您將動態內容從 Web 伺服器直接傳輸到 socket,而不需要在檔案系統中建立暫時的 zip 檔案時。

類似地,如果您的工作流程使用 Linux 管線命令。

支援

一般的回饋/問題/錯誤報告應傳送至 https://github.com/pmqs/IO-Compress/issues(優先)或 https://rt.cpan.org/Public/Dist/Display.html?Name=IO-Compress

作者

Paul Marquess pmqs@cpan.org

版權

版權所有 (c) 2019-2022 Paul Marquess。保留所有權利。

此程式為自由軟體;您可以在與 Perl 相同的條款下重新散佈或修改它。