Если я делаю образ диска и сжимаюсь, это с 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, есть ли какой-либо метод сжатия, на который это работало бы?
В настоящее время предлагаемый дубликат
НЕ ИСПОЛЬЗУЕТ СЖАТИЕ и НЕ ДУБЛИКАТ.
mount
не смонтирует сжатое изображение отдельно.
Я смог заставить сервер NBD "подавать" несжатую версию .gz или .xz файла. Я не уверен, должно ли это читать весь сжатый файл очень часто (только протестированный до сих пор с маленькими файлами в поршне), но по крайней мере это работает, не имея необходимость извлекать целую несжатую копию.
Установите nbdkit и клиент
apt install nbdkit nbd-client
Создайте демонстрацию "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.
Выполненный сервер на СЖАТОМ изображении
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
май / покажет слишком много сообщений о состоянии, особенно при чтении.
Выполненный клиент (в другом терминале/окне)
sudo nbd-client -nofork 127.0.0.1 10809 /dev/nbd0
-nofork
подобно -no-fork
выше, но я не мог уничтожить клиент с CTRL-C, kill <pid>
, или sudo kill <pid>
. Окончание сервера с CTRL-C остановило оба сервера и клиент.
Наблюдайте это /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, хотя потребовалось немного больше рытья, чтобы найти плагин и получить все сочетание.
Вот мой способ сделать его, не знайте консоль, эквивалентную из этого хотя,
Можно использовать squashfs
сжимать образы дисков и затем монтировать их.
Если у Вас нет образа диска, все же используют dd
создать тот:
dd if=/dev/sda1 of=/tmp/sda1.img bs=4M
Установка squashfs
:
apt-get install squashfs-tools
Сожмите изображение:
mksquashfs /tmp/sda1.img /tmp/sda1.squash.img
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 для удовлетворения входного формата аргумента mksquashfsquash.img
- целевое и имя файла вывода squashfs файлsda_backup.img
- название dd копирует В squashfs файлеf
- указывает, что sda_backup.img является регулярным файлом (в противоположность каталогу, блочному устройству или символьному устройству)444
- полномочия sda_backup.img файла в изображении squashfsroot 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.