How to split a ZIP file into multiple parts on macOS and Linux

ZIP files can get quite large, depending on the amount of data we’re ZIPping up there. Having one huge file may not always be desirable, for example when making hard copies onto disk or tape media, or when upload limitations force the use of smaller files.

Thankfully, the clever little ZIP utility has a handy function that can split our archive into smaller chunks for later re-assembly. Here’s how it works:

zip -r -s 200M archive.zip myfiles/*

This will create an archive of all files and subfolders in myfiles, creating a new file every 200MiB (about 10% more than 200MB). We can use K, G and T respectively (for KiB, GiB and TiB, all of which are 10% more than kilobyte, gigabyte and terabyte).

To clarify, the s switch will specify the size of each file, while the -r switch tells ZIP to do this operation recursively.

As a result, we’ll see a list of files like this:

archive.z01<br>archive.z02<br>...<br>archive.zip

To extract any or all of our files again, we can use the UNZIP utility. All we need to do now is to treat archive.zip as our main file and let UNZIP handle the rest. It will understand that all z** files are part of the multivolume archive. For example:

unzip -l archive.zip

will list all files contained in our archive, not matter which files they’re physically contained in.

Should any of the volume files be missing or damaged, none of the archive can be read as far as I know. Make sure you leave them all in place and don’t try to open them by itself.

You can leave a comment on my original post.