代码之家  ›  专栏  ›  技术社区  ›  mrbela

mac终端zip:大小限制参数工作不正常

  •  0
  • mrbela  · 技术社区  · 7 年前

    我需要将一个大文件夹压缩成多个zip文件,但每个压缩文件的大小不应超过1GB。

    我找到了下面的命令

    zip -r -s 1g MyZipFile.zip folderToCompress/
    

    但生成的文件确实超过了1 GB的大小:

    -rw-r--r--  1 user  staff  1073741824 14 Feb 15:40 MyZipFile.z01
    -rw-r--r--  1 user  staff  1073741824 14 Feb 15:42 MyZipFile.z02
    -rw-r--r--  1 user  staff  1073741824 14 Feb 15:41 MyZipFile.z03
    -rw-r--r--  1 user  staff  1073741824 14 Feb 15:42 MyZipFile.z04
    -rw-r--r--  1 user  staff  1073741824 14 Feb 15:43 MyZipFile.z05
    -rw-r--r--  1 user  staff  1073741824 14 Feb 15:43 MyZipFile.z06
    -rw-r--r--  1 user  staff   865071084 14 Feb 15:44 MyZipFile.zip
    

    我做错什么了?

    谢谢你的帮助

    0 回复  |  直到 7 年前
        1
  •  3
  •   eckenrod    7 年前

    zip 似乎把大小限制在 1 Gibibyte, not 1 Gigabyte 当您指定 -s 1g 争论。

    1GIB=2^30=1073741824字节,这就是为什么你看到的是这个数字,而不是1GB=10^9=100000000字节。我在自己的MacOS High Sierra桌面上压缩一个多GB的文件夹得到了同样的结果。 macOS since Snow Leopard handles file sizes according to standard Gigabytes ,所以一定是 拉链 它使用gibibytes进行操作。这个 zip man page 声明您只能为 -s 在kib、mib、gib或tib中。

    所以,如果您想让大小限制精确到1gb,就必须找到某种方法来指定kib、mib、gib或tib中对应于100000000字节的大小。我不认为那是可能的;使用 MiB to GB converter ,最接近1GB的是953.67431 MIB,而且 拉链 不允许您指定 -S 不是整数的参数。