Меню

Чем сжат образ linux

Как уменьшить размер образа диска, созданного dd?

Сабж. Есть образ диска, снятый с раздела, который потом пришлось уменьшить на 500 Кб. Теперь, естественно, записать образ на раздел невозможно, т. к. он меньше. Как откусить маленький кусочек от образа?

Возможно. Конец некуда писать, конечно, но остальное запишет.

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

NTFS с Семёрочкой, там только игоры.

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

Но, всё-таки, образ уменьшить возможно? Или только на другой раздел записывать, уменьшать и снова снимать образ?

на образе надо сделать resize2fs иначе фс рано или поздно попытается туда что-то записать и обломится

пшел на винду, там уменьшай

Acronis Migrate Easy

А он сможет изменить размер _образа_?

Можно, например через qemu-img, но на самом деле это не нужно.
При записи на блочное устройство вы не сможете выйти за пределы размера устройства.

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

Спасибо за ответы, получается, просто взять и отрезать (чтоб без геморроя или дополнительного раздела) никак.

Если потом идёт ещё раздел, тогда правильней забэкапить его начало, запомнить его размер и смещение, удалить, вернуть остаток на место, скопировать образ dd обратно на раздел, виндовыми средствами уменьшить раздел, если системный, то нужен раздел восстановления, диск или установочный. Потом восстановить следующий раздел и его данные. Придётся перезагружаться, но виндовое лучше делать виндовым.

В вашем случае достаточно просто отресайзить ФС одной командой.
Менять размер образа не нужно.

Вот смотрите, в образе в управляющих структурах NTFS записан размер файловой системы, допустим M.
Если этот образ развернуть на меньший раздел, записав только часть, то возможны 2 сценария:
1) в хвосте что-то было и оно потеряется
2) в хвосте ничего не было, но туда могут быть попытки записи.
Чтобы этого не происходило, нужно обеспечить в управляющих структурах NTFS наличие нового размера N.

Источник

Команда Gzip для сжатия и архивации файлов в Linux

Gzip Command in Linux

В этом руководстве мы покажем вам, как использовать gzip команду.

Gzip — это один из самых популярных алгоритмов сжатия, который позволяет уменьшить размер файла и сохранить исходный режим файла, владельца и метку времени.

Gzip также ссылается на .gz формат файла и gzip утилиту, которая используется для сжатия и распаковки файлов.

Синтаксис команды gzip

Общий синтаксис gzip команды выглядит следующим образом:

Gzip сжимает только отдельные файлы и создает сжатый файл для каждого данного файла. По соглашению, имя файла, сжатого с помощью Gzip, должно заканчиваться либо либо, .gz либо .z .

Если вы хотите сжать несколько файлов или каталогов в один файл, сначала вам нужно создать архив Tar, а затем сжать .tar файл с помощью Gzip. Файл, который заканчивается .tar.gz или .tgz является архивом Tar, сжатым с помощью Gzip.

Gzip чаще всего используется для сжатия текстовых файлов, архивов Tar и веб-страниц. Не используйте Gzip для сжатия изображений, аудио, документов PDF и других двоичных файлов, так как они уже сжаты.

gzip может сжимать только обычные файлы. В символические ссылки игнорируются.

Сжатие файлов с gzip

Чтобы сжать один файл, вызовите gzip команду с именем файла:

gzip создаст файл filename.gz и удалит исходный файл.

По умолчанию gzip в сжатом файле хранятся временная метка, режим, владелец и имя исходного файла.

Сохранить оригинальный файл

Если вы хотите сохранить исходный (исходный) файл, используйте -k опцию:

Другой вариант сохранить исходный файл — использовать -c опцию, которая говорит, что gzip нужно писать в стандартный вывод и перенаправлять вывод в файл:

Подробный вывод

Используйте эту -v опцию, если вы хотите увидеть процентное сокращение и имена файлов, которые обрабатываются:

Сжать несколько файлов

Вы также можете передать несколько файлов в качестве аргументов команды. Например, чтобы сжать файлы с именами file1 , file2 , file3 вы бы выполнить следующую команду:

Команда выше создаст три сжатых файлов file1.gz , file2.gz , file3.gz .

Сжать все файлы в каталоге

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

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

Изменить уровень сжатия

gzip позволяет указать диапазон уровней сжатия от 1 до 9. -1 или —fast означает самую высокую скорость сжатия с минимальной степенью сжатия, -9 или —best указывает самую низкую скорость сжатия с максимальной степенью сжатия. Уровень сжатия по умолчанию — -6 .

Например, чтобы получить максимальное сжатие, вы должны выполнить:

Сжатие — это интенсивная загрузка процессора, чем выше уровень сжатия, тем дольше длится процесс.

Читайте также:  Windows microsoft com recoverykeyfaq код ключа

Используя стандартный ввод

Чтобы создать .gz файл из stdin, направьте вывод команды в gzip . Например, чтобы создать резервную копию базы данных Gzipped MySQL, вы должны выполнить:

Вывод mysqldump команды будет входом для gzip .

Распаковка файлов с gzip

Чтобы распаковать .gz файл, используйте -d параметр:

Еще одна команда, которую вы можете использовать для распаковки GZIP-файла gunzip . Эта команда в основном псевдоним для gzip -d :

Возможно, вам будет легче запомнить, gunzip чем gzip -d .

Сохранить сжатый файл

Как и при сжатии файла, -k опция указывает gzip сохранить входной файл, в данном случае это сжатый файл:

Распаковать несколько файлов

Чтобы распаковать несколько файлов одновременно, передайте имена файлов в gzip качестве аргументов:

Распаковать все файлы в каталоге

При использовании -d и -r опции, gzip распаковывает все файлы в данной директории рекурсивно:

Список содержимого сжатых файлов

При использовании с -l параметром gzip показывает статистику по данным сжатым файлам:

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

Чтобы получить больше информации, добавьте -v опцию:

Вывод

С помощью Gzip вы можете уменьшить размер данного файла. Команда gzip позволяет сжимать и распаковывать файлы.

Для получения дополнительной информации о gzip команде обратитесь к странице документации Gnu gzip .

Источник

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

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

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

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

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

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

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

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

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

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

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

Другим примером сжатия с потерями является изображение в формате 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.

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

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

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

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

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

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

Читайте также:  Операционная система windows 10 home 64 bit что это

Чтобы распаковать файл, используйте флаг –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

Заключение

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

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

Источник

Adblock
detector