Working with Linux archives

May 26, 2025

The use of archives in Linux is a common practice. Many programs, modules, entire datasets, media files, etc. are delivered in archived form. Therefore, the skill to work confidently with archives will be a definite plus for any developer. In this post I will try to describe possible scenarios of working with archives briefly and with examples.

Common Archive Formats

There are several common archive formats that work according to different algorithms and have different compression rates:

ExtensionCreatedCompressionCommon Usage
.tar1979NoneBundling files, backups without compression
.zip1989MediumGeneral-purpose archiving, file sharing
.gz1992MediumCompressing single log or text files
.tar.gz .tgz1992MediumLinux packaging, source code distribution
.rar1993HighMultimedia archives, proprietary use
.bz2 .tar.bz21996HighCompressing single files, archival
.7z1999Very HighMaximum compression, large archives
.xz .tar.xz2009Very HighReplacement for .bz2, very compact

Tape Archive (.tar)

📦 Create a new archive (without compression) with some files and folder inside:

tar -cf archive.tar file1 file2 dir/

📦 Create a compressed archive with files and folders inside:

tar -czf archive.tar.gz file1 file2 dir/

📦 Shorthand with .tgz (same command, just a different extension):

tar -czf archive.tgz file1 file2 dir/

📂 Extract files from archive to specified directory:

tar -xf archive.tar -C /path/to/extract

📂 Extract files from the compressed archive to a specified directory:

tar -xzf archive.tar.gz -C /path/to/extract

📂 Extract .tgz:

tar -xzf archive.tgz -C /path/to/extract

🚩 Flags description:

  • -c: Create a new archive
  • -f: File name of the archive
  • -x: Extract files from an archive
  • -z: Use gzip compression
  • -t: List contents of the archive
  • -v: Shows the files being processed
  • -C: (uppercase C) Change the directory where the files will be extracted to

Zip Archive (.zip)

📦 Create a new archive with some files and folder inside:

zip -r archive.zip file1 file2 dir/

📂 Extract files from archive to specified directory:

unzip archive.zip -d /path/to/extract

Gzip Archive (.gz)

.gz compresses only single files — not folders. To compress multiple files, use it together with tar, e.g., .tar.gz.

📦 Compress a single file:

gzip file.txt

📂 Decompress a .gz file to a current directory:

gzip -d file.txt.gz

RAR Archive (.rar)

RAR is a proprietary format. You’ll need to install rar (for creating) and unrar (for extracting) on most Linux systems.

📦 Create a new .rar archive with files and a folder inside:

rar a archive.rar file1 file2 dir/

📂 Extract files from the archive to a specified directory:

unrar x archive.rar /path/to/extract/

Bzip2 Archive (.bz2)

.bz2 compresses a single file. To compress multiple files or directories, combine it with tar (i.e., use .tar.bz2).

📦 Compress a single file:

bzip2 file.txt

📂 Decompress a .bz2 file to a current directory:

bzip2 -d file.txt.bz2

7-Zip Archive (.7z)

Requires the p7zip package (p7zip-full on most distros).

📦 Create a .7z archive with files and folders inside:

7z a archive.7z file1 file2 dir/

📂 Extract files from the archive to a specified directory:

7z x archive.7z -o/path/to/extract/

🚩 Flags description:

  • a: Add files to archive (used to create)
  • x: Extract with full directory structure
  • e: Extract without directory structure (all files to current dir)
  • -o: Set the output directory for extraction (no space after -o)
  • -p: Set a password for encryption/decryption (optional)
  • -m0=lzma2: Specify compression method (LZMA2 is default)

XZ Archive (.xz)

.xz compresses a single file. To compress folders or multiple files, combine it with tar (see .tar.xz).

📦 Compress a single file:

xz file.txt

📂 Decompress a .xz file to a specified directory:

xz -d file.txt.xz

🚩 Flags description:

  • (no flag): Compress the specified file
  • -d: Decompress the file (same as unxz)
  • -k: Keep the original file instead of deleting it after compression/decompression
  • -v: Verbose output
  • -TN: Use N threads for compression (e.g., -T4)
https://yurace.pro/posts/feed.xml