Как создать.IMG изображение диска (sd-карты) без включения свободного места?
в Linux, мы можем сделать
dd if=/dev/sdb of=bckup.img
но если диск 32GB с только 4GB используется, 32GB файл изображения является пустой тратой пространства-времени. Есть ли способ или инструмент для создания изображений только с допустимыми данными?
3 ответов
довольно хороший и простой способ справиться с этим-просто передать его через gzip, что-то вроде этого:
# dd if=/dev/sdb | gzip > backup.img.gz
таким образом, ваше изображение будет сжато, и, скорее всего, неиспользуемое пространство будет сжато почти до нуля.
вы бы использовали это, чтобы восстановить такое изображение обратно:
# cat backup.img.gz | gunzip | dd of=/dev/sdb
одно примечание: если у вас было много файлов, которые были недавно удалены, размер изображения может быть все еще большим (удаление файла не обязательно обнуляет базовые сектора). Вы можете вытереть освободите место, создав и немедленно удалив большой файл, содержащий нули:
# cd /media/flashdrive
# dd if=/dev/zero of=bigfile bs=1M # let it run and quit by disk full error
# rm bigfile
лучшее, что можно сделать, это
-
скопируйте все файлы со всех разделов, сохраняющих метаданные
mkdir -p myimage/partition1
mkdir myimage/partition2
sudo cp -Rrf --preserve=all /media/mount_point_partition1/* myimage/partition1/
sudo cp -Rrf --preserve=all /media/mount_point_partition2/* myimage/partition2/
-
извлечь MBR
sudo dd if=/dev/sdX of=myimage/mbr.img bs=446 count=1
заменить
/dev/sdX
С соответствующим устройством. разделите целевой диск на разделы с размерами больше, чем скопированные данные и должны иметь тот же формат и те же флаги, используя
gparted
. Google, как разделить диск.установите только что отформатированный и секционированный диск. На большинстве компьютеров, вам просто нужно подключить диск, и вы можете найти подключенные разделы в .
-
скопируйте ранее скопированные данные в целевые разделы, используя следующие команды
sudo cp -Rrf --preserve=all myimage/partition1/* /media/mount_point_partition1/
sudo cp -Rrf --preserve=all myimage/partition2/* /media/mount_point_partition2/
-
скопируйте MBR
sudo dd if=myimage/mbr.img of=/dev/sdX bs=446 count=1
теперь njoy УР новый диск!
С помощью bs и графа параметры dd
, вы можете ограничить размер изображения, как показано в шаге 2 ответ 1665017.
вы уже знаете, какой размер изображения вы хотите создать. Если нет, вы можете получить хорошую идею от df
:
df -H --total /
заменить /
с разделенным пробелом списком всех точек монтирования, относящихся к разделам диска.
более точным способом может быть использование fdisk
или ваш предпочтительный редактор разделов и займитесь калькулятором.
$ fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 7.4 GiB, 7948206080 bytes, 15523840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00057540
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 186367 184320 90M c W95 FAT32 (LBA)
/dev/mmcblk0p2 186368 3667967 3481600 1.7G 5 Extended
/dev/mmcblk0p5 188416 3667967 3479552 1.7G 83 Linux
общее используемое пространство в байтах = конечный сектор последнего размера сектора раздела X (здесь это 3667967 x 512).
общее используемое пространство в ГБ = общее используемое пространство в байтах / 10243 (вот это 1.749023 ГБ).
если вы решите, например, что ваш образ должен быть ровно 2 ГБ, следующая команда сделает это:
dd if=/dev/mmcblk0 of=/path/to/pi_updated.img bs=1M count=2048
полученное изображение будет также включать случайный шум за пределами наибольшей степени последнего раздела.
не забудьте sudo
вышеуказанные команды, если ваша учетная запись еще не имеет достаточных привилегий.
для моих целей мне не нужно изображение, которое идеально обрезается до последнего бита данных, поэтому, когда реальный размер составляет 1,75 ГБ, тогда изображение 2 ГБ достаточно близко для меня. Это вырезает другие 6 GB (или 30 GB или все, что у устройства есть) неиспользуемого пространства, которое в противном случае будьте в образе.
Я видел советы во многих местах, что dd
должны не выполняется на монтированной перегородке, и я последовал этому, потому что это кажется интуитивно правильным; это похоже на попытку нарисовать себя, делая эскиз в зеркале с эскизом, который вы делаете также видимым в эскизе. Это немного отрывочно.