Как смонтировать сжатый образ диска?

Если я делаю образ диска и сжимаюсь, это с gzip/xz/etc - там способ смонтировать его непосредственно без первой распаковки его?

Скажите, что я использовал

sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz

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

Или я использовал

sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz

и диск имеет несколько разделов, которые сделали бы его немного тяжелее?

С несжатым изображением целого диска затем с помощью kpartx или более новые версии losetup с он -P флаг должен создать цикл для каждого раздела.

Но есть ли путь к mount/losetup/read сжатое изображение?

Если бы это не будет работать на gzip/xz, есть ли какой-либо метод сжатия, на который это работало бы?


Примечание по дубликату Q

В настоящее время предлагаемый дубликат

НЕ ИСПОЛЬЗУЕТ СЖАТИЕ и НЕ ДУБЛИКАТ.

mount не смонтирует сжатое изображение отдельно.

10
задан 14 October 2016 в 00:14

3 ответа

Я смог заставить сервер NBD "подавать" несжатую версию .gz или .xz файла. Я не уверен, должно ли это читать весь сжатый файл очень часто (только протестированный до сих пор с маленькими файлами в поршне), но по крайней мере это работает, не имея необходимость извлекать целую несжатую копию.

Просмотр gz / xz Сжатый dd отображает "на лету"

  1. Установите nbdkit и клиент

    apt install nbdkit nbd-client
    
  2. Создайте демонстрацию "dd" файл стиля - пустое 50M файл с файловой системой расширения и архивируйте его (Дополнительный только для тестирования)

    fallocate -l 50M 50m
    mkfs.ext3 -v 50m
    

    Затем сжатие или с gzip или с xz

    gzip -vk9 50m
    xz -v9k 50m
    

    Примечание: xz опция --block-size=16MiB должен дать лучшее выполнение произвольного доступа, но за счет меньшего количества сжатия (возможно, 1%?). См. xz сменное описание nbdkit.

  3. Выполненный сервер на СЖАТОМ изображении

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-gzip-plugin.so file=~/Downloads/50m.gz
    

    или для xz

    nbdkit -v --no-fork -i 127.0.0.1 /usr/lib/i386-linux-gnu/nbdkit/plugins/nbdkit-xz-plugin.so file=~/Downloads/50m.xz
    

    --no-fork говорит, что сервер "Не разветвляет в фон" настолько видящие возможные сообщения об ошибках, и уничтожение его с CTRL-C немного легче.

    -v май / покажет слишком много сообщений о состоянии, особенно при чтении.

  4. Выполненный клиент (в другом терминале/окне)

    sudo nbd-client -nofork 127.0.0.1 10809 /dev/nbd0
    

    -nofork подобно -no-fork выше, но я не мог уничтожить клиент с CTRL-C, kill <pid>, или sudo kill <pid>. Окончание сервера с CTRL-C остановило оба сервера и клиент.

  5. Наблюдайте это /dev/nbd0 теперь идентично НЕСЖАТОМУ изображению

    $ sudo diff -s /dev/nbd0 ~/Downloads/50m
    Files /dev/nbd0 and /home/user/Downloads/50m are identical
    

    /dev/nbd0 может теперь использоваться точно так же, как несжатое изображение; смонтированный, читайте/копируйте с dd, или используйте kpartx, partprobe, vgscan / vgchange, и т.д.!

Благодаря Cristian Ciupitu на Unix & Linux, хотя потребовалось немного больше рытья, чтобы найти плагин и получить все сочетание.

6
ответ дан 23 November 2019 в 04:27

Вот мой способ сделать его, не знайте консоль, эквивалентную из этого хотя,

  • Сжатие папка в ISO. enter image description here
  • Монтируются .iso файл с Disk Image Mounter. enter image description here
  • Tada я открываю сжатую ISO, не распаковывая его. enter image description here
0
ответ дан 23 November 2019 в 04:27

Можно использовать squashfs сжимать образы дисков и затем монтировать их.

Создайте образ диска

Если у Вас нет образа диска, все же используют dd создать тот:

dd if=/dev/sda1 of=/tmp/sda1.img bs=4M

Сожмите изображение с squashfs

Установка squashfs:

apt-get install squashfs-tools

Сожмите изображение:

mksquashfs /tmp/sda1.img /tmp/sda1.squash.img

Или Передают потоком сжатие (не нуждайтесь во временном dd файле),

mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'

Поздравление к terminator14 по UbuntuForums.org. Определения/Объяснения:

  • empty-dir - "исходный" dir В основном в нашем случае, просто пустой dir для удовлетворения входного формата аргумента mksquashf
  • squash.img - целевое и имя файла вывода squashfs файл
  • sda_backup.img - название dd копирует В squashfs файле
  • f - указывает, что sda_backup.img является регулярным файлом (в противоположность каталогу, блочному устройству или символьному устройству)
  • 444 - полномочия sda_backup.img файла в изображении squashfs
  • root root - UID и GID для sda_backup.img файла в изображении squashfs. Может быть указан десятичными числами, или по имени
  • dd if=/dev/sda bs=4M - команда dd раньше читала устройство, которое мы хотим сохраненный

Смонтируйте изображение

Сначала смонтируйтесь squashfs изображение:

mkdir /mnt/squash
mount /tmp/sda1.squash.img /mnt/squash

Это представит несжатый образ диска для Вас для монтирования:

mkdir /mnt/sda1
mount /mnt/squash/sda1.img /mnt/sda1

Или если это - полное изображение диска (разделил) Вас, мог бы использовать losetup подключать изображение dd к циклическому устройству (возможно дополнительный) и затем kpartx -a или partprobe найти и разделить разделы к отдельным устройствам, или даже vgscan / vgchange -ay если существует LVM.

9
ответ дан 23 November 2019 в 04:27

Другие вопросы по тегам:

Похожие вопросы: