База знаний (цифровой суверенитет)
  • Bash - работа с архивами

    Команды BASH
    1 4 5

    A
    522
    0

    Содержание

  • A
    522
    0

    Tar.gz - распаковать в тот же каталог. Пример - файл peertube_storage_v5.2.1_20251118_1030.tar.gz

    tar -xvzf peertube_storage_v5.2.1_20251118_1030.tar.gz
    

    Tar.gz - распаковать в заданный каталог.

    tar -xvzf peertube_storage_v5.2.1_20251118_1030.tar.gz -C /путь/куда/распаковать
    
  • A
    522
    0

    Сжатие и распаковка


    Вот самый полный и актуальный (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.gz pigz = многопоточный 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.txt

    2. 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 -czf tar -xzf
    .tar.xz Лучше сжатие, чем .gz tar -cJf tar -xJf
    .tar.zst 2025 — баланс скорости и размера tar --zstd -cf tar --zstd -xf
    .zip Нужно отдать на Windows/macOS zip -r -9 unzip
    .7z Максимальное сжатие + шифрование 7z a -mx=9 7z x
  • A
    522
    0

    Упаковка каталога в 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/