
Я использую устройство Nano Pi с ОС Debian. Образ ОС находится во внутренней памяти (8 ГБ). Общий размер используемой памяти составляет около 4 ГБ. Я хочу сделать резервную копию этой ОС в файле образа.
После того как сделал
dd if=/dev/mmcblk1 of=NanoPi.img bs=8M status=progress
Общий размер файла изображения достигает 8 ГБ. Как сделать изображение только используемой памяти, а не всей?
решение1
Вы не можете сделать это легко, используя, dd
потому что блочное устройство — это просто дамп байтов. Оно может содержать данные давно удаленных файлов в нераспределенном пространстве. dd
не знает об этом, потому что это работа файловой системы. У вас есть несколько вариантов:
Продолжайте использовать dd
... и принять большее использование пространства. Вместо этого сделайте что-то вроде dd if=/dev/mmcblk1 of=NanoPi.img bs=64K conv=noerror,sync status=progress
. Меньший размер блока дает вам немного больше безопасности в случае ошибок чтения. Если dd
не удается прочитать хотя бы один сектор - остальная часть блока не будет обработана. Размер блока - это максимальное количество байтов, которые вы можете потерять из-за одного плохого сектора. conv=noerror
гарантирует продолжение клонирования в случае ошибки. conv=sync
сдвигает указатель в целевом файле вперед в случае ошибок чтения, поэтому данные остаются выровненными и, следовательно, действительными.
Вы можете dd
передать вывод по конвейеру, gzip
чтобы сжать данные и сэкономить место:
dd if=/dev/mmcblk1 bs=64K conv=noerror,sync status=progress | gzip -c > NanoPi.img.gz
Чтобы получить необработанное изображение, выполните gunzip -c ./NanoPi.img.gz > NanoPi.img
.
Использовать rsync
... и работать с необработанными файлами. rsync -aAXv /path/to/mounted/mmcblk1 /path/to/destination/folder
Это может сработать или не сработать в зависимости от того, смонтирована ли ваша файловая система или нет.