Как упростить сжатие 7z с помощью алиасов Bash

Существует множество способов и инструментов, которые вы можете использовать для уменьшения размера ваших файлов, либо чтобы сократить занимаемое ими пространство, либо чтобы отправить их в качестве пакета контакту. Из всех этих инструментов 7-Zip занял лидирующую позицию среди большинства пользователей благодаря своей уникальной комбинации отличной производительности и уровней сжатия без каких-либо затрат.
Все формы сжатия в этом формате оказываются более сложными, чем подход, который мы увидим здесь. По крайней мере, для большинства пользователей, которые используют сжатие для упаковки всего в папке и ее подпапках в сжатые “пакеты”.
Итак, давайте посмотрим, как мы можем объединить поддержку алиасов Bash с командной версией 7z, чтобы создать пакеты наших файлов с помощью простой команды.
Установите p7zip
Как самый популярный инструмент сжатия, 7-Zip, скорее всего, уже установлен в вашей дистрибутиве Linux. Чтобы протестировать это, попробуйте команду “7z” в терминале. Если он не установлен, вы можете установить его в дистрибутивах на базе Ubuntu/Debian с помощью команды:
sudo apt-get install p7zip-fullСоздайте файл алиасов Bash
Алиасы Bash позволяют сопоставлять команды или даже последовательности из нескольких команд с одним словом. Легкий способ добавить алиасы в Bash — это вставить их в конец файла “~/.bashrc”. Для удобства и организации считается лучшим помещать их в отдельный файл.
Скорее всего, этот файл уже существует, и конфигурация Bash включает ссылку на него. Проверьте, так ли это, открыв “~/.bashrc” в вашем любимом текстовом редакторе, и найдите:
if[-f ~/.bash_aliases]; then
. ~/.bash_aliases
FiЕсли нет, добавьте его в конец файла после всего, что уже там.

Имейте информацию о 7-Zip под рукой
Вы можете запустить 7-Zip в терминале, чтобы просмотреть список его опций командной строки. Для более подробной информации посетите этот пользовательский справочник или страницу man программы с помощью:
man 7zЭто поможет вам настроить ваши собственные команды сжатия. Скорее всего, те, которые мы увидим здесь, также покроют ваши потребности. Так что вы можете скопировать и вставить их в свой файл .bash_aliases.

Создайте алиас для ультрасжатия
Откройте файл “~/.bash_aliases” в вашем любимом текстовом редакторе – мы используем nano. Введите:
alias 75='7z a -r -t7z -m0=lzma2 -mx=9 -myx=9 -mqs=on -ms=on'
alias 75 говорит о том, что мы хотим создать команду “75”, которую мы будем использовать с этого момента для сжатия всех файлов и папок в директории в упакованный 7-Zip пакет. Причина, по которой мы выбрали это необычное имя для нашей команды, заключается в том, что его легко запомнить как короткую версию “уровень сжатия 7zip 5”.
7z — это сама команда сжатия. a, следующая за ней, означает “мы хотим добавить файлы в новый сжатый пакет”. -r указывает, что p7zip не должен “ограничиваться папкой, в которой он запущен”, но должен включать конечный сжатый пакет и все подпапки в нем со всеми его содержимым.
-t7z -m0=lzma2 указывает, что мы хотим создать пакеты 7zip, которые в основном используют алгоритм LZMA2 для сжатия файлов. Это обычно дает лучшее сжатие для большинства типов файлов.
-mx=9 -myx=9 соответствуют уровню сжатия и “количеству усилий”, которые 7-Zip приложит для анализа содержимого файлов, которые нужно сжать, чтобы найти лучшую стратегию сжатия. Чем выше их значения, тем больше сжатие и меньше полученный пакет.
Наконец, -mqs=on -ms=on определяет, что мы хотим “солидное” сжатие. Это означает, что p7zip будет сжимать похожие файлы как единые блоки данных, достигая еще лучших результатов. Причина, по которой они существуют как опция, которую можно отключить, заключается в том, что они полезны, но также имеют два недостатка. Они увеличивают время сжатия и делают невозможным разархивирование независимых файлов из конечного пакета, который производит компрессор. С солидным сжатием вы не можете сделать эквивалент “извлечения одного файла из zip”, и вам нужно разархивировать весь пакет, чтобы получить доступ к его содержимому.
Реплицируйте и “сократите” алиас
Мы начали с команды, которая достигает максимального возможного сжатия, чтобы вместо того, чтобы расширять ее дополнительными элементами, мы могли двигаться назад, удаляя параметры и уменьшая установленные значения.
Начните с копирования существующей команды еще пять раз, разместив каждую команду на своей строке. Оставьте первую строку без изменений, так как она уже достигает самого высокого уровня сжатия. Измените остальные, по порядку, удаляя дополнительные опции и уменьшая уровни сжатия, как показано ниже. Не забудьте изменить их алиасы, чтобы соответствовать более низким уровням сжатия.

Вы всегда можете скопировать следующее и вставить это в свой ~/.bash_aliases вместо этого.
alias 75='7z a -r -t7z -m0=lzma2 -mx=9 -myx=9 -mqs=on -ms=on'
alias 74='7z a -r -t7z -m0=lzma2 -mx=9'
alias 73='7z a -r -t7z -m0=lzma2 -mx=7'
alias 72='7z a -r -t7z -m0=lzma2 -mx=5'
alias 71='7z a -r -t7z -m0=lzma2 -mx=3'
alias 70='7z a -r -t7z -m0=lzma2 -mx=1'Активируйте ваши алиасы
Сохраните изменения в файле и вернитесь в терминал. Чтобы загрузить и активировать ваши новые алиасы, используйте команду:
source ~/.bashrcВаши новые команды сжатия активны. P7zip по умолчанию работает со всеми файлами в директории, где он запущен, если вы не определите “что вы хотите сжать” в качестве параметра. Так что все, что вам нужно сделать с этого момента, когда вы хотите сжать содержимое папки в пакет 7z, это ввести команду:
75 archive_nameЗдесь “75” — это алиас для самого высокого уровня сжатия из предыдущего, а “archive_name” — это имя сжатого файла пакета. Вы можете заменить “75” на один из других алиасов (с 75 до 70) для постепенно меньшего, но более быстрого сжатия и использовать любое имя, которое вы хотите для конечного файла.

Если у вас есть какие-либо вопросы, дайте нам знать в комментариях ниже.