Bash - работа с архивами
Команды BASH
4
Сообщения
1
Posters
5
Просмотры
-
Содержание
-
Tar.gz - распаковать в тот же каталог. Пример - файл peertube_storage_v5.2.1_20251118_1030.tar.gz
tar -xvzf peertube_storage_v5.2.1_20251118_1030.tar.gzTar.gz - распаковать в заданный каталог.
tar -xvzf peertube_storage_v5.2.1_20251118_1030.tar.gz -C /путь/куда/распаковать -
Сжатие и распаковка
Вот самый полный и актуальный (2025) список команд по сжатию/распаковке в терминале Linux (Ubuntu/Debian/Mint/Fedora/Arch — всё работает из коробки).
1. tar.gz / tar.xz / tar.bz2 — самые популярные в Linux
Задача Команда Примечание Сжать папку в .tar.gz tar -czf archive.tar.gz /путь/к/папке/-c create, -z gzip, -f имя Сжать в .tar.xz (лучше сжатие) tar -cJf archive.tar.xz /путь/к/папке/-J = xz (обычно в 1.5–2 раза меньше .gz) Сжать в .tar.zst (самое сильное 2025) tar --zstd -cf archive.tar.zst /путь/к/папке/zstd — новый король сжатия Быстрое сжатие (многоядерность) tar -c /путь/к/папке/ | pigz -9 > archive.tar.gzpigz = многопоточный gzip Максимальное сжатие gzip tar -czf archive.tar.gz --best /путь/к/папке/аналог -9 Распаковать .tar.gz tar -xzf archive.tar.gzРаспаковать .tar.xz tar -xJf archive.tar.xzРаспаковать .tar.zst tar --zstd -xf archive.tar.zstРаспаковать в указанную папку tar -xzf archive.tar.gz -C /путь/к/папке/Посмотреть содержимое без распаковки tar -tzf archive.tar.gz \| lessРаспаковать только один файл из архива tar -xzf archive.tar.gz home/user/important.txt2. zip — если нужно отдать на Windows/macOS
# Сжать папку рекурсивно zip -r archive.zip /путь/к/папке/ # Максимальное сжатие zip -9 -r archive.zip /путь/к/папке/ # Без сжатия (быстро, просто упаковать) zip -0 -r archive.zip big_files/ # Распаковать unzip archive.zip unzip archive.zip -d /путь/куда/распаковать/3. 7-Zip (7z) — самое сильное сжатие в 2025 году
Установка:
sudo apt install p7zip-full p7zip-rar # Ubuntu/Debian/Mint# Максимальное сжатие (очень долго, но в 2–4 раза меньше) 7z a -t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on archive.7z /путь/к/папке/ # Быстро и хорошо (уровень ultra) 7z a -t7z -mx=9 archive.7z folder/ # Просто хорошо и быстро 7z a archive.7z folder/ # Распаковать 7z x archive.7z 7z x archive.7z -o/путь/куда/4. zstd — новый стандарт 2024–2025 (быстро + сильно)
Установка (обычно уже есть):
sudo apt install zstd# Сжать папку (очень быстро и сильно) tar -c folder/ | zstd -19 -o folder.tar.zst # Ещё быстрее и лучше (уровень 22 — максимум) tar -c folder/ | zstd -T0 --ultra -22 -o folder.tar.zst # Распаковать zstd -d folder.tar.zst -o folder.tar && tar -xf folder.tar # или одной командой: zstd -dc folder.tar.zst | tar -xf -5. Самые полезные однострочники, которые я использую каждый день
# Сжать папку максимально сильно одной командой (2025) tar -c folder/ | 7z a -si -mx=9 -t7z folder.7z # Распаковать любой архив (сам догадается) 7z x archive.* # работает с zip, rar, 7z, tar.gz, tar.xz и т.д. # Сжать и сразу зашифровать AES-256 7z a -p"секретный_пароль" -mhe=on encrypted.7z secret_folder/ # Распаковать с паролем 7z x encrypted.7zИтоговая шпаргалка 2025 года
Формат Когда использовать Команда сжатия Команда распаковки .tar.gz Совместимость, быстро tar -czftar -xzf.tar.xz Лучше сжатие, чем .gz tar -cJftar -xJf.tar.zst 2025 — баланс скорости и размера tar --zstd -cftar --zstd -xf.zip Нужно отдать на Windows/macOS zip -r -9unzip.7z Максимальное сжатие + шифрование 7z a -mx=97z x -
Упаковка каталога в zip
Вот полный и актуальный на 2025 год набор команд для упаковки папки в ZIP — от самых простых до максимально эффективных и красивых.
Базовые команды (всегда работают)
# Самое простое — упаковать папку рекурсивно zip -r archive.zip /path/to/folder # Упаковать текущую папку (точка = текущая директория) zip -r backup.zip . # Исключить лишнее (git, node_modules, __pycache__ и т.д.) zip -r backup.zip . -x "*.git*" "*node_modules*" "*__pycache__*" "*.DS_Store*" # С максимальным сжатием (дольше, но меньше размер) zip -r -9 backup.zip folder/ # С прогресс-баром (очень удобно при больших папках) zip -r backup.zip folder/ ; echo "Готово: $(du -h backup.zip)"Продвинутые и самые полезные варианты (мои ежедневные)
# 1. Только новые/изменённые файлы (обновить существующий архив) zip -r -u archive.zip folder/ # 2. Сжать с паролем (AES-256) zip -r -e --password=твой_пароль secret.zip private_folder/ # 3. Самое сильное сжатие + пароль + прогресс zip -r -9 -e -P суперсекрет archive.zip important_data/ # 4. Создать архив без пути (все файлы в корне архива) cd /path/to/folder && zip -r -9 ../backup.zip ./* # 5. Упаковать и сразу проверить целостность zip -r backup.zip folder/ && unzip -t backup.zip && echo "Архив в порядке" # 6. Упаковать с красивым прогресс-баром (через rsync + zip) rsync -a --info=progress2 folder/ temp_folder/ && zip -r -9 backup.zip temp_folder/ && rm -rf temp_folder/Альтернативы (если zip по какой-то причине нет или хочется лучше)
Инструмент Команда Плюсы 7z (лучшее сжатие) 7z a -tzip -mx=9 backup.zip folder/В 1.5–3 раза меньше, чем zip -9 zstd + tar tar -c folder/ | zstd -19 -o backup.tar.zstБыстрее + лучше сжатие (2025 стандарт) pigz (многопоточный zip) tar -c folder/ | pigz -9 > backup.tar.gzВ 5–10 раз быстрее на многоядерных CPU Установка (Debian/Ubuntu):
sudo apt install zip unzip p7zip-full zstd pigzМои личные алиасы (добавь в ~/.bashrc или ~/.zshrc)
alias zipmax="zip -r -9" # максимальное сжатие alias zipass="zip -r -e -P" # с паролем alias zipclean='zip -r backup.zip . -x "*.git*" "*node_modules*" "*.DS_Store" "__pycache__/*"' alias zip7="7z a -tzip -mx=9" # 7-zip с максимальным сжатиемИтог: запомни всего три команды на всю жизнь
# Обычное использование zip -r archive.zip folder/ # Максимальное сжатие zip -r -9 archive.zip folder/ # С паролем zip -r -e archive.zip folder/