Since macOS is based on Unix there are a number of ways to compress files and folders within the filing system using Unix based application code, below are a few options using the Terminal or command line interface (cli). The default command line application interface in macOS is the Terminal and is stored in /Applications/Utilities.
File and folder compression saves on file size and ensures the contents are captured and delivered or stored as one monolithic file. A compressed file which contains files and folders is generally referred to as an archive. Here are some built in compression applications you can use including zip, tar, gz, bz2, gz and dmg.
ZIP – Cross Platform
First up is ZIP one of the most commonly used compression techniques used across all platforms
zip -r archive_name.zip folder_to_compress
If you want to make a zip without those invisible Mac resource files such as “_MACOSX” or “._Filename” and .ds store files, use the “-X” option in the command so:
zip -r -X archive_name.zip folder_to_compress
TAR.GZ – Cross Platform
Second up is TAR, an old favourite on Unix/Linux – you add the GZ for the compression – compresses tighter than zip
tar -zcvf archive_name.tar.gz folder_to_compress
tar -zxvf archive_name.tar.gz
TAR.BZ2 – Cross Platform
A variation on TAR GZ but with better compression than both tar.gz and zip.
tar -jcvf archive_name.tar.bz2 folder_to_compress
tar -jxvf archive_name.tar.bz2
Without the tar
DMG – macOS Only
This one is macOSnative only – for a GUI interface use /Applications/Utilities/Disk Utility – for command line use:
hdiutil create -format UDZO -srcfolder folder_to_compress archive_name.dmg
hdiutil attach archive_name.dmg
ls -lah /Volumes/archive_name/
hdiutil eject /Volumes/archive_name/
You can also use a number of different formats for creating a .dmg
- UDZO – Compressed image (default)
- UDRO – Read only image
- UDBZ – Better compressed image
- UDRW – Read/Write image
- UDTO – DVD disk image
That’s the low down, the more common compression packages available will typically be covered in one of the above.