Intereting Posts
Перекрестные запросы от VLAN в dnsmasq Как установить размер шрифта по умолчанию для всех приложений Qt5? Показывать текстовый файл по одной странице за один раз, подождать 20 секунд, затем автоматически настроить Почему я не могу изменить фон рабочего стола на JPG в LXDE? Запуск программы под другим пользователем с отображением X-сервера fdisk удалить смонтированный раздел Удалить имя файла при рекурсивном подсчете числа вхождений шаблона SD-карта «сломана» – изменения в файлах не сохраняются при перезагрузке ssh: как отключить эхо при запуске команды на пульте дистанционного управления Различные форматы заголовков для разных приложений терминалов? Устанавливать пароль при первом входе в систему пользователя pubkey-auth как перенаправить весь UDP-трафик на VPN-клиент VPN с помощью UFW Раздельные монтажные перегородки? Как получить полное исполняемое имя запущенного процесса в Linux После обновления sSMTP до версии 2.61 я не могу отправлять почту через gmail

Скажите gzip / bzip2 / 7z / etc не сжать уже сжатые файлы?

Я тренируюсь / дома и прокладываю его через bzip2. Однако у меня есть много уже сжатых файлов (.jpg, .mp4, .mkv, .webm и т. Д.), Которые bzip2 не должен пытаться сжимать.

Есть ли там компрессоры CLI, которые достаточно умны (либо через libmagic, либо с помощью перечисляемых пользователем расширений), чтобы не пытаться создавать резервные копии файлов с минимальным или сжимаемым доступом?

Аналогичный вопрос был задан несколько лет назад, но не знаю, были ли какие-либо обновления с тех пор. Могу ли я заставить 7z пропускать сжатие (но не включать) определенных файлов при сжатии каталога с его подсистемами?

Как вы это делаете, с сжатием .tar файла ответ наверняка нет.

Независимо от того, что вы используете для сжатия файла .tar , он не знает о содержимом файла, он просто видит двоичный поток, и не являются ли части этого потока несжимаемыми или минимально сжимаемыми, неизвестно, как это известно. Не путайте опции для команды tar для выполнения сжатия, tar --create --xz --file some.tar file1 как «тупой», так как знание о содержимом потока как tar --create file1 | xz > some.tar tar --create file1 | xz > some.tar есть.

Вы можете сделать несколько вещей:

  1. вы переходите в какой-то формат контейнера, отличный от .tar который позволяет вам сжимать на индивидуальной основе, но это неблагоприятно, если у вас много мелких файлов в одном каталоге с похожими шаблонами (поскольку они сжимаются отдельно). Формат zip – это пример, который будет работать.
  2. вы сжимаете файлы, если это необходимо, прежде чем помещать их в файл tar. Это можно сделать прозрачно, например, с помощью tarfile и модулей bzip2 Это также имеет недостатки пункта 1. И нет никакого прямого извлечения из файла tar, поскольку некоторые файлы будут выдаваться сжатыми, что может не потребовать декомпрессии (поскольку уже сжаты перед резервным копированием).
  3. Используйте tar как есть и живите с тем фактом, что это произойдет и выберите не очень высокое сжатие для gzip / bzip2 / xz чтобы они не пытались слишком сильно сжать поток, тем самым не теряя времени на попытку получить еще 0,5% сжатия что не произойдет.

Вы можете посмотреть результаты параллельного сжатия xz (не относящиеся к файлам tar), чтобы увидеть некоторые результаты попыток ускорить xz опубликованные в моем блоге

Алгоритм LZ4 может быть вариантом.

Он проверяет, сжимается ли начало блока и сохраняет его без сжатия, если отношение низкое. Это успешно предотвращает сжатие уже сжатых файлов без необходимости указывать их имена.

Общая степень сжатия ниже по сравнению с указанными вами алгоритмами. Но LZ4 очень быстро, с другой стороны. Вы можете легко достичь нескольких сотен сжатий MiB / s и скорости декомпрессии GiB / s.

Примеры:

 # Compression (creates <inputfile>.lz4) lz4c <inputfile> # Decompression lz4c -d <inputfile> # Use with tar tar cf - <directory> | lz4c > <directory>.tar.lz4 # Use with GNU tar tar cf <directory>.tar.lz4 -I lz4c <directory>