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