Вы не можете сделать это легко, используя, 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
, Это может или не может работать для вас в зависимости от того, смонтирована ли ваша файловая система или нет.