Linux tar степень сжатия

Как получить максимальное сжатие с .tar.gz? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как я понимаю, использование tar + gzip заключается в том, что tar обычно он используется для объединения группы файлов в один файл, а затем gzip используется для сжатия этого файла.

Я недавно узнал, что tar можно также сжимать.

Поскольку я не до конца понимаю, как работает сжатие @ это ядро, у меня есть (возможно, нелепые) опасения, что отправка предварительно сжатого .tar в gzip может помешать сжатию gzip, а также его возможному разрешению и тому подобному.

По сути, мой вопрос: какую комбинацию методов args / сжатие я должен использовать для создания абсолютного наименьшего tar.gz, и как для этого выглядит выражение командной строки?

Или вы можете указать tar пользователю максимальное сжатие следующим образом:

Кроме того, чтобы ваши envvars были свободными от помех, вы можете сделать это:

Как вы сказали, « tar может также сжимать », это означает, что — tar не всегда сжимает данные сам по себе.

Это делается только при использовании с z опцией. Это тоже не само по себе, но — путем передачи данных через gzip.

Однако вместо этого, как отмечено в этом ответе, вы можете направить две команды: tar & так gzip , чтобы вы могли явно указать уровень сжатия для gzip команды, чтобы получить наименьший выходной размер.

tar cvf — / путь / к / каталогу | gzip -9 -> file.tar.gz

Здесь 9 указывается максимально возможный уровень сжатия.

Обычно ни gzip, ни tar не могут создать «самый маленький tar.gz». Есть много утилит сжатия, которые могут сжимать до формата gz. Я написал Баш скрипт « gz99 » , чтобы попробовать gzip , 7z и , advdef чтобы получить файл наименьшего. Чтобы использовать это для создания наименьшего возможного запуска файла:

advdef Утилита от AdvanceCOMP обычно дает наименьший размер, но и глючит (то gz99 утилита проверяет , что он не поврежден файл , прежде чем принять выход advdef ). Для advdef непосредственного использования создайте файл .tar.gz так, как вам хочется. Затем запустите:

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

Поскольку вы только недавно узнали, что tar может сжимать, и не сказали, зачем вам нужен самый маленький файл «.tar.gz», вы можете не знать, что есть более эффективные форматы, которые можно использовать с файлами tar, например, xz. Как правило, переключение на другой формат может дать намного лучшее улучшение сжатия, чем перебор с опциями gzip. Основным недостатком xz является то, что он не так распространен, как gzip, поэтому людям, которым вы отправляете файл, возможно, придется установить новый пакет. Это также имеет тенденцию быть немного медленнее, особенно при сжатии. Если это не имеет значения для вас, и вы действительно хотите самый маленький файл tar, попробуйте:

Современные версии tar, например в Ubuntu 13.10, автоматически обнаруживают сжатые файлы. Так что даже если вы используете сжатие xz, вы все равно можете распаковать как обычно:

Чтобы быстро понять, как сравниваются эти утилиты сжатия, рассмотрим эффект сжатия patch-3.1.1 из ядра Linux:

В этом тривиальном примере мы видим, что для получения наименьшего gz нам нужен advdef (хотя 7z -tgzip почти так же хорош и намного менее глючит). Мы также видим, что переключение на xz дает нам гораздо больше места, чем попытка выжать максимум из старого формата gz без сжатия, которое занимает слишком много времени.

Источник

Примеры Использования Команды Tar в Linux

Tar — одна из наиболее широко используемых команд Linux для сжатия. Использование tar даёт много преимуществ, за что её и любят специалисты, имеющие дело с командной строкой Linux. Дальше мы поговорим об этих преимуществах, а также рассмотрим основные примеры использования утилиты.

Tar расшифровывается как «Tape archive» и используется для сжатия файлов и папок.

В большинстве случаев результатом сжатия с использованием утилиты tar является файл с расширением .tar. Последующие сжатия выполняются с помощью gzip, в результате получаем файл .tar.gz.

С помощью tar вы можете сжимать и распаковывать файлы. Tar имеет много опций, но некоторые из них вам, возможно, придётся запомнить.

  • Tar довольно эффективно сжимает файлы, степень сжатия — 50%;
  • Значительно уменьшает размер упакованных файлов и папок;
  • Tar не изменяет свойства файлов и каталогов. Разрешения и другие функции остаются неизменными;
  • Tar доступна в большинстве версий Linux, в том числе и в более старых, а также в прошивке Android;
  • Быстро сжимает и разжимает содержимое;
  • Простая в использовании.

Теперь, когда мы разобрались с преимуществами tar, стоит ответить на ещё один вопрос: при каких сценариях используется эта утилита?

  • Если вы работаете в системах на базе Linux и вам нужно сжать файлы;
  • Вам нужно перенести огромную коллекцию файлов и папок с одного сервера на другой;
  • Нужно сделать резервную копию сайта, данных или чего-либо ещё;
  • Чтобы уменьшить использование места в вашей системе;
  • Для загрузки и скачивания папок.
Читайте также:  Пишет что этот графический драйвер не совместим с версией windows

Как использовать Tar в Linux

Давайте узнаем, какие основные операции вы можете выполнять с помощью tar. Но прежде чем мы начнём, вам нужно будет подключиться к вашему VPS-серверу по SSH. Вот руководство, которое вам поможет!

Создание файла .tar в Linux

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

Здесь /home/primerArhiva — это каталог, который необходимо сжать, в результате чего мы получим primerArhiva.tar.

В команде используются параметры –cvf, которые реализуют следующие модификации:

  • c – создает новый файл .tar;
  • v – выводит подробное описание процесса сжатия;
  • f – имя файла.

Создание файла .tar.gz в Linux

Если вы хотите добиться ещё большего сжатия, создайте архив .tar.gz. Вот пример:

Дополнительная опция z представляет сжатие gzip. Как вариант, вы также можете создать архив .tgz, похожий на tar.gz. Например:

Создание файла .tar.bz2 в Linux

Файлы архива .bz2 имеют ещё больший уровень сжатия, чем файлы, сжатые с gzip. Однако для сжатия и распаковки потребуется больше времени. Чтобы создать архив, вам нужно использовать опцию -j. Пример операции:

Похожие варианты сжатия — .tar.tbz и .tar.tb2. Например:

Как разархивировать файлы .tar в Linux

Команду tar также можно использовать для извлечения файлов. Следующая команда извлечет файлы в текущий каталог:

Если вы хотите распаковать файлы в другой каталог, используйте опцию -C. Например:

Аналогичную команду можно использовать для распаковки файлов .tar.gz:

.tar.bz2, .tar.tbz или .tar.tb2 файлы могут быть распакованы аналогично. Для этого введите следующую команду в командной строке:

Как вывести список содержимого архива в Linux

После создания архива вы можете просмотреть его содержимое с помощью подобной команды:

Команда выведет полный список файлов с отметками времени и разрешениями. Используйте аналогичную команду для .tar.gz:

Такой вариант подходит и для файлов .tar.bz2:

Как извлечь только один файл из архива .tar

Вы можете извлечь необходимый вам файл, не распаковывая остальные файлы архива. Один из таких примеров показан ниже:

Здесь primer.sh — это тот единственный файл, который будет извлечён из primerArhiva.tar. В качестве альтернативы вы также можете использовать следующую команду:

Чтобы извлечь только один файл из .tar.gz, вы можете использовать команду, аналогичную показанной ниже:

Или аналогичную команду:

Чтобы извлечь один файл из .tar.bz2, воспользуйтесь командой:

Или аналогичную команду:

Как видите, команда tar имеет довольно гибкий синтаксис.

Как извлечь несколько файлов из архивов .tar

Если вы хотите извлечь несколько файлов, используйте следующий формат команды:

Соответственно для .tar.gz команда будет выглядеть так:

Для .tar.bz2:

Извлечь несколько файлов за критерием

Если вы хотите извлечь из архива только определённые файлы, например только .jpg, используйте метасимволы. Пример такой команды показан ниже:

Для .tar.gz введите:

Для .tar.bz2:

Как добавить файлы в архив .tar

Вы можете не только извлекать, но и добавлять выбранные файлы в существующий архив. Для этого мы будем использовать параметр -r, который означает добавление. Tar может добавлять как файлы, так и каталоги.

Ниже приведён пример, в котором мы добавляем primer.jpg в существующий файл primerArhiva.tar.

Мы также можем добавить каталог. В примере ниже каталог image_dir был добавлен в primerArhiva.tar.

Вы не можете добавлять файлы или папки в архивы .tar.gz или .tar.bz2.

Как проверить архив .tar в Linux

Используя tar, вы также можете проверить целостность созданного архива. Вот один из способов, как это можно сделать:

Данная команда не применима к файлам .tar.gz или .tar.bz2.

Как проверить размер архива в Linux

Вы также можете проверить размер созданного архива. Размер будет указан в КБ (килобайтах).

Ниже приведены примеры команды с разными архивными файлами:

Итоги

Как видите, tar — действительно мощный инструмент, который должен знать каждый специалист, имеющий дело с терминалом Linux.

Мы надеемся, что эта статья помогла вам разобраться с особенностями использования tar в Linux! Вы также можете изучить подробную инструкцию по этой утилите, вызвав справку с помощью команды man tar. Увидимся в следующем руководстве!

Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.

Источник

Инструменты сжатия файлов в Linux

Сжимать файлы и каталоги необходимо по нескольким причинам. Некоторые из наиболее очевидных преимуществ – это сохранение дискового пространства экономия полосы пропускания при использовании сети.

В этом руководстве мы обсудим различные методы сжатия данных и связанные с ними операции, которые увеличивают гибкость сжатия (например, архивирование).

Примечание: Все примеры выполнены на сервере Ubuntu 12.04, но инструменты будут работать аналогичным образом и в других дистрибутивах Linux.

Основы сжатия и архивирования

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

Сжатие с потерями и без потерь

При обсуждении сжатия в отношении компьютеров и типов файлов одни и те же термины могут означать несколько разных вещей в зависимости от контекста. Возьмем, к примеру, музыкальный файл MP3. MP3 – это сжатый звуковой файл, созданный из более крупного исходного музыкального файла.

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

Это метод называется сжатием с потерями, поскольку он действительно теряет информацию из исходного файла, которая не попадает в MP3. Конвертировать MP3 обратно в исходный файл невозможно.

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

Читайте также:  Шаблоны сертификатов windows server 2016

Другим примером сжатия с потерями является изображение в формате JPEG. Чем больше оно сжато, тем больше данных теряется, и тем заметнее будет сжатие. Утилита сжатия JPEG попытается найти поля цвета, которые достаточно близки друг к другу, и заменяет все такие поля одним цветом. Чем больше степень сжатия, тем больше цветов будет объединено таким образом.

Альтернативным методом является сжатие без потерь; эта технология создает файл меньший, чем исходный, но такой файл можно использовать для восстановления исходного файла. В этом руководстве рассматривается только сжатие без потерь. Этот тип не использует методы аппроксимации для сжатия данных, вместо этого здесь применяются определенные алгоритмы для распознавания повторяющихся частей файла. Такие части удаляются и заменяется заполнителями. Дальнейшие повторения шаблона заменяются одним и тем же заполнителем.

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

Кроме того, современные методы сжатия без потерь считаются адаптивными. Это означает, что они не анализируют весь входной файл сразу и не создают из него «словарь» ссылочных подстановок. Вместо этого они анализируют файл по мере его поступления и переписывают словарь в зависимости от того, какие данные повторяются в файле. В процессе сжатия словарь постепенно становится более эффективным.

Основы архивирования

Под понятием архивирования данных обычно подразумевается их резервное копирование и сохранение в безопасном месте, часто в сжатом формате. «Архив» на сервере Linux в целом имеет несколько другое значение. Обычно архивы – это файлы tar.

Раньше данные с серверов часто архивировались в ленточные архивы – это магнитные ленточные устройства, которые могут хранить последовательные данные. В некоторых отраслях этому методу резервного копирования по-прежнему отдают предпочтение. Чтобы сделать архивирование более продуктивным, была создана программа tar. Она позволяет ссылаться на файлы и управлять ими в виде одного файла, не влияя на права и метаданные файлов. В дальнейшем файл или всю файловую систему можно извлечь из архива.

В целом, tar – это формат, который обеспечивает удобное распространение, хранение, резервное копирование и управление группами связанных файлов.

В данном руководстве речь также пойдёт об архивах, поскольку они часто используют сжатие для более производительного хранения данных.

Инструменты сжатия

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

Утилита gzip

gzip – это уже классический инструмент сжатия данных в Linux. Он появился в 1992 году и до сих пор находится в разработке.

Инструмент gzip использует алгоритм сжатия DEFLATE (который также используется другими популярными технологиями, такими как PNG, HTTP, SSH).

Одно из главных преимуществ инструмента gzip – его скорость. Он может сжимать и распаковывать данные с гораздо более высокой скоростью, чем некоторые другие популярные технологии (особенно если сравнить наиболее компактные форматы сжатия каждой утилиты). Он также очень эффективен в плане использования памяти при сжатии и распаковке и не требует больше памяти при оптимизации сжатия.

Ещё одним преимуществом gzip является совместимость. Поскольку gzip – очень старый инструмент, почти все системы Linux независимо от возраста поддерживают gzip.

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

Обычно файлы gzip имеют расширение .gz. Чтобы сжать файл с помощью gzip, нужно ввести:

Команда сожмет файл и переименует его в sourcefile.gz.

Чтобы выполнить рекурсивное сжатие каталога, добавьте флаг –r:

gzip -r directory1

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

Чтобы получить больше информации о сжатом файле, используйте флаг -l, который выдаст статистику:

gzip -l test.gz
compressed uncompressed ratio uncompressed_name
5133 14073 63.7% test

Чтобы передать результат другой утилите, вы можете отправить сжатый файл в стандартный вывод с помощью флага –с. В этом примере вывод будет перенаправлен обратно в файл:

gzip -c test > test.gz

Вы можете настроить оптимизацию сжатия, передав числовой флаг от 1 до 9. Флаг -1 (и его псевдоним –fast) выполняет самое быстрое, но наименее тщательное сжатие. Флаг -9 (и его псевдоним –best) – это, соответственно, самое медленное и самое тщательное сжатие. По умолчанию используется среднее значение -6.

gzip -9 compressme

Чтобы распаковать файл, добавьте флаг –d (также можно использовать псевдоним gunzip).

Инструмент bzip2

bzip2 – еще один популярный формат и инструмент сжатия. Он немного младше gzip, вышел в 1996 году. Сегодня bzip2 считается традиционной альтернативой gzip.

Если gzip работает на алгоритме DEFLATE, то инструмент bzip2 – это реализация алгоритма Берроуза-Уилера. Это различие в методологии приводит к тому, что инструмент bzip2 довольно сильно отличается от gzip.

Наиболее важным преимуществом bzip2 для большинства пользователей является более высокая степень сжатия, которая достигается за счет увеличения времени сжатия. Инструмент bzip2 может создавать значительно более компактные файлы, чем gzip, но для этого требуется гораздо больше времени (из-за более сложного алгоритма).

К счастью, на распаковку уходит гораздо меньше времени, чем на сжатие. Поэтому формат bzip2 часто используется для распространения файлов: потратив больше времени на сжатие, вы получаете файлы меньшего объема, которые легко распространять и можно быстро распаковать. На распаковку у bzip2 все же уходит намного больше времени, чем у gzip.

Читайте также:  Windows unable to start error

Также следует иметь в виду, что у bzip2 требования к памяти больше, чем у gzip. Это не повлияет на работу большинства машин, но вполне может отразиться на работе небольших встроенных устройств. Опционально можно передать флаг -s, который сократит требования к памяти примерно наполовину, но также приведет к снижению степени сжатия.

Обычно файлы, сжатые с помощью этого инструмента, имеют расширение .bz2.

Чтобы сжать файл, введите:

Эта команда сожмет файл и присвоит ему имя afile.bz2.

Вы можете передать флаг -s, чтобы утилита работала в режиме экономии памяти. Это понизит качество сжатия, но, с другой стороны, не потратит столько ресурсов.

bzip2 поддерживает числовые флаги, но их действие несколько отличается от флагов gzip. В bzip2 они представляют размер блока, который утилита использует при сжатии. Этот параметр определяет отношение использования памяти к сжатию, а не скорость. По умолчанию используется флаг -9 (относительно высокое использование памяти, но высокое качество сжатия).

Чтобы распаковать файл, используйте флаг –d:

bzip2 -d file.bz2

Эта команда вернёт распакованный файл по имени file.

Утилита xz

xz является относительно новым механизмом сжатия. Инструмент вышел в 2009 году и с тех пор стабильно обновляется.

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

Хотя сжатые с помощью xz файлы весят меньше, чем файлы, сжатые с помощью других утилит, для сжатия требуется значительно больше времени. Например, на сжатие довольно большого файла с аргументами и флагами у gzip уйдет около половины минуты, bzip2 может потратить где-то около минуты, а у xz эта операция может занять около четырех или пяти минут.

Инструмент сжатия xz также использует много памяти (иногда столько же, сколько и предыдущие инструменты). Конечно, если на сервере достаточно памяти, это не будет проблемой, но эту характеристику нужно учитывать при выборе.

Хотя сжатие может занять намного больше времени, чем хотелось бы, на распаковку времени уходит довольно мало. Конечно, скорость распаковки xz никогда не достигает показателей gzip, но обычно она значительно превышает скорость bzip2. Использование памяти приемлемое (но относительно других инструментов довольно высокое).

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

Ещё один недостаток xz – утилита не поддерживается некоторыми старыми системами.

Файлы, созданные с помощью xz, обычно используют расширение .xz.

Чтобы сжать файл, введите:

Эта команда создаст сжатый файл file.xz.

Запросить статистику сжатия можно с помощью флага –l:

xz -l test.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 5,016 B 13.7 KiB 0.356 CRC64 test.xz

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

xz -c test > test.xz

Утилита xz также поддерживает числовые флаги. Чем меньше число, тем быстрее сжатие (-0 обеспечивает самую высокую скорость сжатия). По умолчанию используется значение -6.

Если вы хотите увеличить качество сжатия и не беспокоитесь о памяти и времени, которое уйдет на выполнение процедуры, используйте флаг –е, который включает режим сжатия «extreme». Его производительность можно настраивать с помощью числовых флагов.

xz -e -9 large_file

Чтобы распаковать файлы, используйте флаг –d.

xz -d large_file.xz

В результате получится распакованный файл large_file.

Архивирование и сжатие

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

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

Комбинация tar и gzip

Чтобы создать архив tar, который можно будет сжать утилитой gzip, передайте флаг –z. Он включает сжатие создаваемого архива. Перед флагами команды tar не ставится тире. Чтобы создать сжатый архив, обычно используется команда:

tar czvf compressed.tar.gz directory1

  • c архивирует каталог directory1.
  • v включает расширенный вывод.
  • z включает сжатие gzip.
  • f передаст вывод в сжатый файл compressed.tar.gz.

Как только файл будет создан, можно заглянуть внутрь. Для этого используйте флаг t вместо с.

tar tzvf compressed.tar.gz
drwxr-xr-x demouser/demouser 0 2014-03-19 18:31 directory1/
-rw-r—r— demouser/demouser 5458 2014-03-19 18:31 directory1/httpd.conf.orig
-rw-r—r— demouser/demouser 2295 2014-03-19 18:31 directory1/nginx.conf.orig
-rw-r—r— demouser/demouser 5458 2014-03-19 18:21 directory1/httpd.conf

Чтобы распаковать архив, используйте флаг x:

tar xzvf compressed.tar.gz

Структура каталогов архива будет перемещена в текущий каталог.

Комбинация tar и bzip2

Чтобы сжать архив с помощью bzip2, замените флаг z (который вызывает gzip) флагом j.

tar cjvf bzipcompressed.tar.bz2 directory2

Создав файл, вы можете просмотреть его:

tar tjvf bzipcompressed.tar.bz2
drwxr-xr-x demouser/demouser 0 2014-03-19 18:31 directory2/
-rw-r—r— demouser/demouser 5458 2014-03-19 18:31 directory2/httpd.conf.orig
-rw-r—r— demouser/demouser 2295 2014-03-19 18:31 directory2/nginx.conf.orig
-rw-r—r— demouser/demouser 5458 2014-03-19 18:21 directory2/httpd.conf

Чтобы распаковать архив в текущий каталог, введите:

tar xjvf bzipcompressed.tar.bz2

Комбинация tar и xz

Чтобы сжать архив с помощью xz, используйте флаг J:

tar cJvf xzcompressed.tar.xz directory3

Чтобы просмотреть содержимое файла, используйте:

tar tJvf xzcompressed.tar.xz
drwxr-xr-x demouser/demouser 0 2014-03-19 18:31 directory3/
-rw-r—r— demouser/demouser 5458 2014-03-19 18:31 directory3/httpd.conf.orig
-rw-r—r— demouser/demouser 2295 2014-03-19 18:31 directory3/nginx.conf.orig
-rw-r—r— demouser/demouser 5458 2014-03-19 18:21 directory3/httpd.conf

Чтобы распаковать архив в текущий каталог, введите:

tar xJvf xzcompressed.tar.xz

Заключение

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

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

Источник

Оцените статью