В мире Linux умение эффективно архивировать и сжимать данные — не просто навык, а необходимость. Будь то резервное копирование, передача файлов или экономия места, правильный выбор инструмента решает всё. В этой статье мы разберёмся с главными командами для работы с архивами: от классического tar до универсальных zip и 7z.
Введение: Архивирование vs Сжатие
Важно понимать разницу между этими двумя понятиями:
- Архивирование — это объединение множества файлов и папок в один контейнер (архив). Исходные данные при этом не уменьшаются в размере. Классический пример — утилита
tar. - Сжатие — это непосредственное уменьшение размера данных с помощью специальных алгоритмов. Примеры утилит:
gzip,bzip2,xz.
Часто эти процессы используются вместе: сначала файлы пакуют в tar-архив, а затем сжимают его.
Наш арсенал: Обзор утилит
Перед погружением в примеры, ознакомимся с инструментами, которые будем использовать.
Команды-архиваторы:
| Утилита | Что делает | Расширение | Особенности |
|---|---|---|---|
| tar | Архивирование | .tar |
Архиватор, который только объединяет файлы. Для сжатия использует внешние утилиты. |
| zip | Архивирование + Сжатие | .zip |
Универсальный формат, стандарт для Windows. |
| 7z | Архивирование + Сжатие | .7z |
Отличное сжатие, открытый формат. |
| rar | Архивирование + Сжатие | .rar |
Проприетарный формат, популярен в Windows. В Linux для распаковки используют unrar. |
Команды-утилиты сжатия (часто используются с tar):
| Утилита | Что делает | Расширение | Особенности |
|---|---|---|---|
| gzip | Сжатие | .gz |
Быстрое сжатие и распаковка. |
| bzip2 | Сжатие | .bz2 |
Лучшее сжатие, чем у gzip, но медленнее. |
| xz | Сжатие | .xz |
Максимальное сжатие, но очень медленный. |
| zstd | Сжатие | .zst |
Современный алгоритм с идеальным балансом скорости и качества. |
Подготовка рабочего окружения
Большинство систем Linux уже имеют предустановленные tar и gzip. Для установки полного комплекта в Debian/Ubuntu выполните:
sudo apt update
sudo apt install -y tar gzip bzip2 xz-utils zstd zip p7zip-full rar
Важно: Утилита
rarявляется проприетарной и находится в репозиторииnon-free.
Создадим тестовые файлы для наглядности примеров:
Создаем два файла со случайными данными
dd if=/dev/urandom of=./file1 bs=50K count=10
dd if=/dev/urandom of=./file2 bs=50K count=10
Создаем директорию и копируем в неё файлы
mkdir -v ./dir/
cp -v ./file1 ./file2 ./dir/
Властелин архивов: Команда tar
tar (Tape ARchiver) — это основа основ. Его синтаксис может показаться сложным из-за обилия ключей, но разобравшись, вы получите мощнейший инструмент.
Базовые операции:
- Создание архива:
tar -c -f ./archive.tar ./file1 ./file2 ./dir/
-c (--create)— создать архив.-f (--file)— указать имя файла архива.-v (--verbose)— показать процесс подробно.- Просмотр содержимого:
tar -t -f ./archive.tar
Извлечение архива:
tar -x -f ./archive.tar
- —
-x (--extract)— извлечь.- Чтобы извлечь в конкретную папку, используйте
-C: tar -x -f archive.tar -C /path/to/target/
- Чтобы извлечь в конкретную папку, используйте
Двойной удар: Сжатие tar-архива
Вот где tar раскрывает свою мощь. Специальные ключи позволяют ему прозрачно работать с утилитами сжатия.Gzip (.tar.gz или .tgz):
tar -c -z -f ./archive.tar.gz ./file1 ./file2
Bzip2 (.tar.bz2):
tar -c -j -f ./archive.tar.bz2 ./file1 ./file2
XZ (.tar.xz):
tar -c -J -f ./archive.tar.xz ./file1 ./file2
Zstd (.tar.zst):
tar -c --zstd -f ./archive.tar.zst ./file1 ./file2
Совет: Для распаковки любого из этих форматов достаточно команды
tar -x -f archive.tar.xx, так какtarсам определит тип сжатия.
Сжатие одиночных файлов
Иногда архивировать не нужно, а сжать один файл — необходимо.
- Сжать файл с помощью
gzip(исходный файл удалится):
gzip file1.txt # Создаст file1.txt.gz
Сжать файл, сохранив оригинал:
gzip -k file1.txt
Разжать файл:
gunzip file1.txt.gz
или
gzip -d file1.txt.gz
Аналогично работают утилиты bzip2, xz и zstd.
Мощь конвейеров: Потоковое архивирование и сжатие
Одна из сильнейших сторон Linux — возможность объединять утилиты с помощью конвейера (|).
- Создание архива и его передача для сжатия:
tar -c -f - ./dir/ | gzip -9 > ./archive.tgz
Копирование директории на удаленный сервер через SSH:
tar -c -z -f - ./dir/ | ssh user@host "tar -C /tmp -x -z -f -"
Создание зашифрованного архива с помощью gpg:
tar -c -z -f - ./dir/ | gpg --batch --symmetric --passphrase "MyPassword" > ./archive.tgz.gpg
Разбиение большого архива на части:
tar -c -z -f - ./large_dir/ | split -b 200M - ./archive.tgz.part-
- Собрать обратно:
cat ./archive.tgz.part-* | tar -x -z -f -
Универсальные солдаты: Zip, 7z и Rar
Эти форматы популярны благодаря своей кроссплатформенности.
Zip:
zip archive.zip file1.txt dir/ # Создать
unzip -l archive.zip # Просмотреть
unzip archive.zip # Извлечь
7z:
7z a archive.7z file1.txt dir/ # Создать (a = add)
7z l archive.7z # Просмотреть (l = list)
7z x archive.7z # Извлечь (x = extract)
Rar:
rar a archive.rar file1.txt dir/ # Создать
unrar l archive.rar # Просмотреть
unrar x archive.rar # Извлечь
Заключение
- Для повседневных задач в Linux
tar + gzip— классика, которая работает почти везде. - Если нужен максимальный баланс скорости и сжатия — присмотритесь к связке
tar + zstd. - Для передачи файлов пользователям Windows идеально подойдет
zip. - Когда важно сэкономить каждый байт и время не критично — ваш выбор
7zилиtar + xz.
Экспериментируйте, тестируйте на своих данных, и вы найдёте идеальный инструмент для каждой ситуации. Удачи в освоении бескрайних возможностей командной строки
