Простой метод (ленивый) бэкап всей sd card
Windows
Используем Win32DiskImager, вставляем sd card и ручками прописываем место сохранения + файл в строке Win32DiskImager
Жмем read получаем бэкап полной sd card, даже если занято было 4 Гб а sd на 32 Гб то будет все равно 32 Гб. Дальше образ можно сжать любым архиватором для получения меньшего размера.
Linux
под root:
fdisk -l
Находим свою sd card, в моем случае она расположена /dev/sda
dd if=/dev/sda of=/mnt/backup/root.img bs=512 conv=noerror status=progress
Тут только Linux, можно использовать виртуальную машин
у.1. Вставляем флешку в пк.
2. Открываем утилиту Gparted - видим следующее:
3. В списке устройств выберем флешку.
4. В строке меню выберем пункт Вид\Информация об устройстве. В появившейся информации обратите внимание на размер сектора, в дальнейшем он нам пригодится.
5. Для уменьшения размера вашего будущего образа необходимо уменьшить до минимума свободное пространство вашего раздела(т.к. утилита dd будет копировать всё, включая и свободное место), для этого кликните правой кнопкой мыши на вашем разделе и выберете пункт "Изменить размер или переместить". Измените размер вашего раздела уменьшив при этом свободное место. Затем примените сделанные вами изменения - пункт меню "Правка\Применить все операции"
6. Нажмите правой кнопкой мыши на вашем измененном разделе и выберете пункт "Информация". В появившемся окне нам понадобится пункт "Последний сектор"
Внимание! В этом случае будет выбраны для записи текущий раздел включая разделы(или область boot как в моем случае) расположенные до него за исключением разделов расположенных после него(справа)!
С утилитой dd нужно работать с правами root - входим в root:
sudo -s
Нажимаем "Enter" и вводим пароль пользователя, снова "Enter" и мы попадаем в root.
Можно конечно записать так:
dd if=/dev/sdd of=image.img bs=512 count=6897664 conv=fsync status=progress
В данном случае указан размер блока равным размеру сектора, но что если мы хотим указать размер блока другой, например 2048?
Тогда (6897664*512)/2048 = 1724416 и запись будет иметь такой вид:
dd if=/dev/sdd of=image.img bs=2048 count=1724416 conv=fsync status=progress
Желательно бы еще наш образ сразу сжать, тогда наша запись будет выглядеть так:
dd if=/dev/sdd bs=2048 count=1724416 conv=fsync status=progress | gzip -> image.img.gz
Образ готов,в моем случае размер образа получился 3,5 Гб.
1724416*2048=3 531 603 968 b
Для записи обратно из gzip используем следующую команду
gunzip -c image.img.gz | dd of=/dev/sdd bs=4k conv=fsync,noerror status=progress
Если обычная команда для записи на флешку из img
dd if=/media/user/image.img of=/dev/sdd bs=4M status=progress
В любом случаи на флешки отобразиться место записаного образа (уменьшенного), для восстановления первоначального значения, для обоих флешек, воспользуйтесь командой (только orangepi):
systemctl start orangepi-resize-filesystem.service