Мне нравится создавать резервную копию образа при первом резервном копировании системы. После этого я впервые использую rsync для создания инкрементных резервных копий.
Моя обычная резервная копия образа выглядит следующим образом:
Смонтировать и обнулить пустое пространство:
dd if=/dev/zero of=temp.dd bs=1M
rm temp.dd
Размонтируйте и вставьте диск во время сжатия
dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz
чтобы вернуть систему в нормальное состояние, я обычно делаю
gunzip -c /mnt/sda1/hda.img.gz | dd of=/dev/hda conv=sync,noerror bs=64K
Это действительно просто и позволяет мне сохранить «весь диск», но на самом деле просто сэкономить использованное пространство.
Здесь проблема. Допустим, я делаю вышеописанное, но не в чистой системе и не запускаю резервные копии rsync достаточно быстро, и есть файлы, к которым я хочу получить доступ, которые находятся на образе. Допустим, у меня нет места для хранения, чтобы распаковать и скопировать образ на диск, но я хочу смонтировать образ, чтобы извлечь из него отдельные файлы .... Возможно ли это?
Обычно никто не будет сжимать образ dd, что позволит вам просто смонтировать образ, используя -o loop
... но это не мой случай ...
Любые предложения по установке сжатого IMG на лету?
Будет ли использование AVFS для «монтирования» gz-файла, а затем монтирование внутренней работы dd.img (я так не думаю ... но потребуется проверка ...)?
источник
SquashFS
для таких вещей. Он также удаляет дубликаты файлов.Ответы:
Это зависит от того, является ли образ диска полным образом диска или просто разделом.
Мойка раздела (ов)
Если диск находится в хорошем рабочем состоянии, вы получите лучшее сжатие, если очистите пустое пространство на диске нулями. Если диск выходит из строя, пропустите этот шаг.
Если вы создаете образ всего диска, вам нужно помыть каждый раздел на диске.
ВНИМАНИЕ: Будьте осторожны, вы хотите установить
of
в файл в смонтированном разделе, НЕ ограждающей САМ!Создание образа раздела
Где
sda
имя устройства и1
номер раздела. Отрегулируйте соответственно для вашей системы, если вы хотите создать образ другого устройства или раздела.Создание образа всего диска
Где
sda
это название устройства. Отрегулируйте соответственно для вашей системы, если вы хотите, чтобы изображение другого устройства.компрессия
Создайте изображение «squashfs», которое содержит полное несжатое изображение.
Потоковое сжатие
Чтобы избежать создания отдельного временного файла полного размера диска, вы можете выполнить потоковую передачу в образ squashfs.
Монтирование сжатого образа раздела
Сначала смонтируйте образ squashfs, затем смонтируйте образ раздела, сохраненный в смонтированном образе squashfs.
Теперь у вас есть смонтированный сжатый образ, смонтируйте сам образ (то есть внутри образа squashfs)
Теперь ваше изображение смонтировано под
compressed_image
.РЕДАКТИРОВАТЬ: Если вы хотите просто восстановить образ диска в раздел на этом этапе (вместо того, чтобы монтировать его для просмотра / чтения содержимого), просто
dd
сделайте образsquash_mount/sda1_backup.img
на месте назначения вместо того, чтобы делатьmount
.Монтирование сжатого полного образа диска
Для этого вам необходимо использовать пакет с именем kpartx. kpartx позволяет вам монтировать отдельные разделы в полный образ диска.
Сначала смонтируйте сжатый раздел, содержащий полный образ диска.
Теперь вам нужно создать устройства для каждого раздела в полном образе диска:
Это создаст устройства для разделов в полном образе диска,
/dev/mapper/loopNpP
где N - номер, назначенный для устройства обратной связи, а P - номер раздела. Например:/dev/mapper/loop0p1
.Теперь у вас есть способ смонтировать отдельные разделы в полном образе диска:
источник
-p
или,-pf
чтобы передать ему псевдо-файл. Псевдофайл может использоваться для таких вещей, как создание узлов устройства, которые иначе невозможно сделать без root (полезно для построения изображений как часть процесса сборки) или для потоковой передачи вывода какой-либо команды в изображение. Одним из примеров, приведенных в документации (/usr/share/doc/squashfs-tools/examples/pseudo-file.example
в Debian / Ubuntu), являетсяinput f 444 root root dd if=/dev/sda1 bs=1024 count=10
копирование первых 10 КБ из образа диска в файл с именем «input» в образе squashfs.Если изображение доступно только для чтения, вы также можете использовать nbdkit ( man-страницу ) и его плагин xz (xz должен обеспечить лучшее время сжатия и произвольного доступа, чем gzip).
Создать сжатый образ раздела
--block-size
Вариант 16 МиБа должен обеспечить хорошую случайную производительность доступа.Примечание: вы можете использовать альтернативные программы сжатия xz, такие как pixz, который обеспечивает параллельное сжатие, просто убедитесь, что он разбивает выходные данные на несколько небольших блоков, в противном случае nbdkit должен распаковывать много данных. Например, по состоянию на сентябрь 2015 года pxz не поддерживает это.
Подайте это с nbdkit
Подключиться к серверу NBD
Монтировать его только для чтения
Когда сделано
Остановите nbdkit , нажав Ctrl+ C(или с помощью kill ).
источник
Пытаться
archivemount
archivemount - файловая система на основе FUSE для вариантов Unix, включая Linux. Его целью является монтирование архивов (то есть tar, tar.gz и т. Д.) В точку монтирования, где они могут быть считаны или записаны, как и в любой другой файловой системе. Это делает доступ к содержимому архива, который может быть сжат, прозрачным для других программ, без распаковки их.
http://linuxaria.com/howto/how-to-mounts-an-archive-for-access-as-a-file-system
После монтирования архива вы можете использовать его содержимое как обычный файл. Возможно получить таблицу разделов или конвертировать, смонтировать образ с помощью инструментов qemu.
squashfs полезен для загрузки с образа, но очень сложен для резервного копирования.
источник
dd if=/dev/hda conv=sync,noerror bs=64K | gzip -c > /mnt/sda1/hda.ddimg.gz
Этот ответ дополняет ответ Кристиана Чиупиту . Если вы используете сжатие xz с разумным размером блока, вы можете получить доступ к образу диска, используя guestfish или другие инструменты libguestfs , например:
источник
На самом деле, нет. Вы не можете действительно искать конкретный блок в сжатом файле, не распаковывая его целиком, что затрудняет использование сжатого изображения в качестве блочного устройства.
Вы можете использовать что-то вроде
dump
иrestore
(илиtar
, действительно), все из которых используют потоковый формат ... так что вы можете получить доступ к индивидуальным файлам, эффективно сканируя несжатый поток. Это означает, что если файл, который вы хотите, находится в конце сжатого архива, у вас может быть долгое время ожидания, но это не требует, чтобы вы фактически распаковывали все на диск.Использование
tar
резервных копий может показаться немного старомодным, но вы получаете большую гибкость.источник
Еще одно дополнение к ответу Кристиана Чиупиту :
Если вы используете
nbdkit
для монтирования полного образа диска (вместо образа раздела), вам может потребоваться указать размер блока (размер сектора диска) при подключении к NBD-серверу, поскольку по умолчанию используется1024
байты. Чтобы использовать512
байты вместо:После этого диск отобразится как
/dev/nbd0
, и вы сможете просматривать таблицу разделов, используяfdisk -l
. Однако разделы еще не монтируются - используйтеkpartx
(из ответа doug65536 ) для создания устройств для разделов, например:Наконец, разделы появятся в
/dev/mapper/
, и вы можете смонтировать их как обычно. Убедитесь, что вы используете режим readonly (-o ro
), поскольку плагин xz поддерживает только чтение:источник