AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 760337
Accepted
Vishnu
Vishnu
Asked: 2016-02-29 08:00:07 +0800 CST2016-02-29 08:00:07 +0800 CST 2016-02-29 08:00:07 +0800 CST

如何压缩有大小限制的文件?

  • 772

我有一个从文件夹压缩文件的脚本。我想确保压缩文件不超过 10 MB。如果大小超过 10MB,则应创建另一个 ZIP 文件。

是否有任何命令(或其他方法)可用于此?

linux
  • 3 3 个回答
  • 81606 Views

3 个回答

  • Voted
  1. Best Answer
    ricmarques
    2016-02-29T08:36:22+08:002016-02-29T08:36:22+08:00

    您可以使用“ --split-size ”选项使用“ zip ”本身的“拆分存档”功能。

    从“zip”手册页(“ man zip”):

    (...)

    拆分存档的一种用途是将大型存档存储在多个可移动
    媒体上。对于包含 20 个拆分文件的拆分存档,文件通常
    命名为(将 ARCHIVE 替换为您的存档名称)
    ARCHIVE.z01、ARCHIVE.z02、...、ARCHIVE.z19、ARCHIVE.zip。请注意,
    最后一个文件是 .zip 文件。

    (...)

    -s splitsize
    --split-size 分割大小

    拆分大小是一个可选的数字,后跟一个乘数。
    目前该数字必须是整数。乘数
    当前可以是 k(千字节)、m(兆字节)、g(千兆字节)
    或 t(太字节)之一。由于 64k 是最小拆分大小,因此
    没有乘数的数字默认为兆字节。例如,要创建
    一个名为 foo 的拆分存档,其中包含 bar
    目录的内容,拆分为 670 MB,这可能对刻录
    CD 有用,命令:

                    zip -s 670m -r foo bar
    

    可用于。

    因此,要创建拆分 zip 存档,您可以执行以下操作(“ -r”是包含目录子目录的“递归”开关):

    $ zip -r -s 10m archive.zip directory/

    要解压缩文件,“ zip”手册页说明您应该使用“-s 0`”开关:

    (...)

     zip -s 0 split.zip --out unsplit.zip
    

    将拆分存档转换为单文件存档。

    (...)

    因此,您首先使用“-s 0”开关“取消拆分”ZIP 文件:

    $ zip -s 0 archive.zip --out unsplit.zip

    ...然后您解压缩未拆分的文件:

    $ unzip unsplit.zip

    • 39
  2. Henrik Carlqvist
    2016-02-29T08:38:01+08:002016-02-29T08:38:01+08:00
    tar -czvf - /path/to/files | split -b 10M - archive.tar.gz
    

    会给你一些文件:

    archive.tar.gzaa
    
    archive.tar.gzab
    
    ...
    

    然后可以使用以下方法解压缩:

    cat archive.tar.* | tar -xzvf -
    
    • 11
  3. Jay Marm
    2019-02-20T16:21:12+08:002019-02-20T16:21:12+08:00

    这是我对 5GB 文件的处理方式(按照 OP 的要求分为 1GB 和 10MB)...

    示例:将5GB 文件拆分为1GB 文件以复制到 FAT32 USB(文件名“FIVE_GB_FILE.ISO”)

    第1步:压缩文件(不压缩,与源文件相同的目录)

    zip -0 FIVE_GB_FILE.ZIP FIVE_GB_FILE.ISO
    

    第 2 步:将 5GB 的 zip 文件拆分为 1GB 的 zip 文件

    zip -s 1000m SPLIT_5GB_FILES FIVE_GB_FILE.ZIP
    

    瞧……您应该有以下 1GB 文件(以及原始文件和步骤 1 中的 zip)

    SPLIT_5GB_FILES.zip
    SPLIT_5GB_FILES.Z01
    SPLIT_5GB_FILES.Z02
    SPLIT_5GB_FILES.Z03
    SPLIT_5GB_FILES.Z04
    
    • 5

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve