ZIP / 7z / ZSTD — Archive Tools

If you like this project, consider supporting me on Buy Me a Coffee ☕️


tags:

ZIP, 7-Zip (7z), and Zstandard (zstd) are three widely-used compression tools, each with distinct strengths:

Что это: ZIP, 7-Zip (7z) и Zstandard (zstd) — три широко используемых инструмента сжатия. ZIP — универсальный формат, 7z — максимальное сжатие, zstd — современная высокоскоростная альтернатива.

Common use cases / Типичные случаи использования:

Status / Статус:

See also: TAR cheatsheet, TAR+ZSTD cheatsheet


ZIP — Classic Archives

Installation

sudo apt install zip unzip                    # Debian/Ubuntu
sudo dnf install zip unzip                    # RHEL/Fedora
sudo pacman -S zip unzip                      # Arch Linux

Create Archives

zip archive.zip file.txt                     # Zip single file / Архивировать один файл
zip -r archive.zip dir/                       # Zip recursively / Архивировать рекурсивно
zip -r archive.zip file1 file2 dir/           # Multiple files/dirs / Несколько файлов/каталогов
zip -r -9 archive.zip dir/                    # Maximum compression / Максимальное сжатие
zip -r -0 archive.zip dir/                    # Store only (no compression) / Только хранение

Update & Add

zip -u archive.zip newfile.txt                # Update archive / Обновить архив
zip -d archive.zip file.txt                   # Delete from archive / Удалить из архива
zip -r archive.zip . -x "*.log"               # Exclude pattern / Исключить шаблон
zip -r archive.zip dir/ -x "*/.git/*"         # Exclude .git / Исключить .git

Password Protection

zip -r -e archive.zip dir/                    # Encrypt with password / Зашифровать паролем
zip -r -P <PASSWORD> archive.zip dir/         # Password in command / Пароль в команде

[!CAUTION] Using -P <PASSWORD> exposes the password in shell history and process list. Prefer -e for interactive password entry. Использование -P <PASSWORD> оставляет пароль в истории команд. Используйте -e для интерактивного ввода.

[!WARNING] ZIP's default encryption (ZipCrypto) is considered weak. For sensitive data, use 7z with AES-256 encryption (-mhe=on). Шифрование ZIP по умолчанию (ZipCrypto) считается слабым. Для конфиденциальных данных используйте 7z с AES-256.

List & Test

unzip -l archive.zip                          # List contents / Список содержимого
unzip -t archive.zip                          # Test integrity / Проверить целостность
unzip -v archive.zip                          # Verbose list / Подробный список

UNZIP — Extract ZIP

Basic Extraction

unzip archive.zip                             # Extract to current dir / Распаковать в текущую директорию
unzip archive.zip -d out/                     # Extract to out/ / Распаковать в out/
unzip -q archive.zip                          # Quiet mode / Тихий режим
unzip -o archive.zip                          # Overwrite without prompt / Перезаписать без подтверждения
unzip -n archive.zip                          # Never overwrite / Никогда не перезаписывать

Selective Extraction

unzip archive.zip file.txt                    # Extract single file / Распаковать один файл
unzip archive.zip "*.txt"                     # Extract by pattern / Распаковать по шаблону
unzip archive.zip -x "*.log"                  # Exclude pattern / Исключить шаблон
unzip archive.zip dir/                        # Extract directory / Распаковать каталог

Password-Protected

unzip -P <PASSWORD> archive.zip               # Extract with password / Распаковать с паролем

7-Zip — High Compression

Installation

sudo apt install p7zip-full p7zip-rar         # Debian/Ubuntu
sudo dnf install p7zip p7zip-plugins          # RHEL/Fedora
sudo pacman -S p7zip                          # Arch Linux

Create Archives

7z a archive.7z file.txt                      # Create 7z archive / Создать 7z архив
7z a archive.7z file1 dir/                    # Add files/dirs / Добавить файлы/каталоги
7z a -t7z -mx=9 archive.7z dir/               # Maximum compression / Максимальное сжатие
7z a -t7z -mx=1 archive.7z dir/               # Fastest compression / Быстрое сжатие
7z a -tzip archive.zip dir/                   # Create ZIP format / Создать формат ZIP
7z a -ttar archive.tar dir/                   # Create TAR format / Создать формат TAR

Extract Archives

7z x archive.7z                               # Extract with paths / Распаковать с путями
7z e archive.7z                               # Extract to current dir / Распаковать в текущую директорию
7z x archive.7z -o/path/to/out/               # Extract to path / Распаковать в путь
7z x archive.zip                              # Extract ZIP / Распаковать ZIP
7z x archive.rar                              # Extract RAR / Распаковать RAR

[!NOTE] 7z x preserves directory structure, while 7z e extracts all files flat into a single directory. 7z x сохраняет структуру каталогов, а 7z e извлекает все файлы в одну директорию.

List & Test

7z l archive.7z                               # List contents / Список содержимого
7z t archive.7z                               # Test integrity / Проверить целостность
7z l -slt archive.7z                          # Detailed list / Подробный список

Update & Delete

7z u archive.7z newfile.txt                   # Update archive / Обновить архив
7z d archive.7z file.txt                      # Delete from archive / Удалить из архива

Password & Encryption

7z a -p<PASSWORD> archive.7z dir/             # Password protection / Защита паролем
7z a -p<PASSWORD> -mhe=on archive.7z dir/     # Encrypt headers / Зашифровать заголовки
7z x -p<PASSWORD> archive.7z                  # Extract with password / Распаковать с паролем

[!TIP] Use -mhe=on to encrypt file names in the archive header. Without it, file names are visible even without the password. Используйте -mhe=on для шифрования имён файлов. Без этого имена файлов видны даже без пароля.

Compression Levels

7z a -mx=0 archive.7z dir/                    # Copy (no compression) / Копирование (без сжатия)
7z a -mx=1 archive.7z dir/                    # Fastest / Быстрое
7z a -mx=5 archive.7z dir/                    # Normal (default) / Нормальное (по умолчанию)
7z a -mx=9 archive.7z dir/                    # Ultra / Ультра

ZSTD — Modern Compression

Installation

sudo apt install zstd                         # Debian/Ubuntu
sudo dnf install zstd                         # RHEL/Fedora
sudo pacman -S zstd                           # Arch Linux

Compress Files

zstd file.txt                                 # Compress file / Сжать файл
zstd -19 file.txt                             # Max compression (level 19) / Максимальное сжатие
zstd -1 file.txt                              # Fast compression / Быстрое сжатие
zstd -T0 file.txt                             # Use all CPU cores / Использовать все ядра CPU
zstd -o output.zst file.txt                   # Specify output / Указать выход
zstd -v file.txt                              # Verbose / Подробный вывод

Decompress Files

zstd -d file.zst                              # Decompress / Распаковать
unzstd file.zst                               # Alternative / Альтернатива
zstd -d -c file.zst > output.txt              # Decompress to stdout / Распаковать в stdout

Multiple Files

zstd *.txt                                    # Compress all txt / Сжать все txt
zstd -d *.zst                                 # Decompress all zst / Распаковать все zst
zstd -rm *.txt                                # Compress and remove / Сжать и удалить

[!WARNING] zstd -rm removes original files after compression. Use with caution in production. zstd -rm удаляет оригинальные файлы после сжатия. Используйте с осторожностью.

Tar Integration

tar --zstd -cvf archive.tar.zst dir/          # Create tar.zst / Создать tar.zst
tar --zstd -xvf archive.tar.zst               # Extract tar.zst / Распаковать tar.zst
tar --use-compress-program=zstd -cvf archive.tar.zst dir/  # Alternative / Альтернатива
tar -I zstd -xvf archive.tar.zst              # Alternative extraction / Альтернативная распаковка

Benchmarking

zstd -b file.txt                              # Benchmark compression / Бенчмарк сжатия
zstd -b1:19 file.txt                          # Test levels 1-19 / Тест уровней 1-19

Comparison & Benchmarks

Compression Ratio Comparison

Tool Ratio Compress Speed Decompress Speed Description (EN / RU)
gzip ~2.5x ~100 MB/s ~300 MB/s Universal, moderate / Универсальный, средний
bzip2 ~3x ~10 MB/s ~40 MB/s Good ratio, slow / Хорошее сжатие, медленный
xz ~4x ~5 MB/s ~100 MB/s Best ratio, very slow / Лучшее сжатие, очень медленный
7z ~4.5x ~5 MB/s ~100 MB/s Best ratio, Windows friendly / Лучшее, совместим с Windows
zstd ~3x ~400 MB/s ~1000 MB/s Very fast, good ratio / Очень быстрый, хорошее сжатие

Use Cases

Tool Best For (EN / RU)
gzip Universal, default for archives / Универсальное, по умолчанию для архивов
bzip2 Better compression, legacy systems / Лучшее сжатие, устаревшие системы
xz Maximum compression, slow / Максимальное сжатие, медленное
7z Maximum compression, Windows compatible / Максимальное сжатие, совместимость с Windows
zstd Modern, fast, best balance / Современное, быстрое, лучший баланс
zip Universal, Windows compatible / Универсальное, совместимость с Windows

Encryption Comparison

Tool Algorithm Header Encryption Security Level (EN / RU)
ZIP (ZipCrypto) PKZIP stream cipher ❌ No Weak — easily cracked / Слабое
ZIP (AES) AES-256 ❌ No Strong / Сильное
7z AES-256-CBC ✅ Yes (-mhe=on) Very strong / Очень сильное
gpg + tar Various N/A Very strong / Очень сильное

Real-World Examples

Backup with ZSTD

# Fast backup
tar --zstd -cvf backup-$(date +%F).tar.zst /home/<USER>

# Maximum compression backup
tar -I "zstd -19 -T0" -cvf backup-$(date +%F).tar.zst /data

# Extract
tar --zstd -xvf backup-$(date +%F).tar.zst

Split Large Archives

# Create split zip (100MB parts)
zip -r -s 100m archive.zip /large/dir

# 7z split (1GB parts) / 7z
7z a -v1g archive.7z /large/dir

# Rejoin split zip
zip -F archive.zip --out complete.zip

Password-Protected Backups

# 7z encrypted backup / 7z
7z a -p<PASSWORD> -mhe=on backup.7z /sensitive/data

# Zip encrypted / Zip
zip -r -e backup.zip /sensitive/data

Cross-Platform Archives

# For Windows compatibility
zip -r archive.zip dir/

# Best compression for Windows
7z a -t7z -mx=9 archive.7z dir/

# Universal with good compression
tar -czf archive.tar.gz dir/

Log Compression

# Compress old logs
find /var/log -name "*.log" -mtime +7 -exec zstd -19 {} \;

# Compress and remove originals
find /var/log -name "*.log" -mtime +7 -exec zstd --rm {} \;

# Batch compress
zstd -19 /var/log/*.log

Docker Image Archives

# Save and compress
docker save myimage:latest | zstd -19 > myimage.tar.zst

# Load
zstd -d -c myimage.tar.zst | docker load

Automated Rotation

# Compress and keep 7 days
tar --zstd -cvf backup-$(date +%F).tar.zst /data
find . -name "backup-*.tar.zst" -mtime +7 -delete

Verify Archive Integrity

unzip -t archive.zip                          # Verify zip / Проверить zip
7z t archive.7z                               # Verify 7z / Проверить 7z
tar --zstd -tvf archive.tar.zst               # Verify tar.zst / Проверить tar.zst

Best Practices

General Recommendations

Compression Levels

Tool Levels Default
zstd 1–19 3
7z 0–9 5
zip 0–9 6
gzip 1–9 6

Default Extensions

Extension Description (EN / RU)
.zip ZIP archives / ZIP архивы
.7z 7-Zip archives / 7-Zip архивы
.zst ZSTD compressed / Сжатые ZSTD
.tar.zst TAR with ZSTD / TAR с ZSTD
.tar.gz TAR with gzip / TAR с gzip
.tar.xz TAR with xz / TAR с xz

On this page

sysadmin Description ZIP — Classic Archives Installation Create Archives Update &amp; Add Password Protection List &amp; Test UNZIP — Extract ZIP Basic Extraction Selective Extraction Password-Protected 7-Zip — High Compression Installation Create Archives Extract Archives List &amp; Test Update &amp; Delete Password &amp; Encryption Compression Levels ZSTD — Modern Compression Installation Compress Files Decompress Files Multiple Files Tar Integration Benchmarking Comparison &amp; Benchmarks Compression Ratio Comparison Use Cases Encryption Comparison Real-World Examples Backup with ZSTD Split Large Archives Password-Protected Backups Cross-Platform Archives Log Compression Docker Image Archives Automated Rotation Verify Archive Integrity Best Practices General Recommendations Compression Levels Default Extensions Documentation Links