### Образ SD-карты с помощью dd

_Чтобы размер образа занимал как можно меньше места и, соответственно быстрее создавался, необходимо на SD-карте уменьшить размер раздела (отрезать всё свободное место), т.к. в создаваемый образ оно тоже попадает_

_Уменьшить размер раздела можно с помощью стандартной утилиты **Диски** (Linux Mint), **Gparted**, **parted**_

1.  Расчет размера разделов

```bash
sudo fdisk -l /dev/sdb
```

вывод будет примерно такой:

    Диск /dev/sdb: 29,29 GiB, 31439454208 байт, 61405184 секторов
    Disk model: Card  Reader
    Единицы: секторов по 1 * 512 = 512 байт
    Размер сектора (логический/физический): 512 байт / 512 байт
    Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
    Тип метки диска: dos
    Идентификатор диска: 0x1238ae1a

    Устр-во    Загрузочный начало   Конец Секторы Размер Идентификатор Тип
    /dev/sdb1                8192  532479  524288   256M             c W95 FAT32 (LBA)
    /dev/sdb2              532480 5279743 4747264   2,3G            83 Linux

Обратим внимание на 2 параметра:
Конец - **5279743** (это последний сектор нашего раздела)</br>
Размер секторов - **Единицы: секторов по 1 \* 512 = 512 байт**</br>
Таким образом нам необходимо сохранить:</br>
5279743 + 1 (первый сектор начинается с 0) = 5279744 секторов</br>
5279744 \* 512 (размер сектора) = 2703228928 байт</br>
2703228928 / 1024 / 1024 = 2578 Мб (обязательно округляем в большую сторону)</br>

2.  Создание образа
    _необходимо запустить запись с нужными параметрами_

```bash
sudo dd if=/dev/sdb of=$HOME/Backup/image.img bs=1M count=2578 conv=noerror,sync status=progress
```

либо с учетом пустого места (без параметра count)

```bash
sudo dd if=/dev/sdb of=$HOME/Backup/image.img bs=1M conv=noerror,sync status=progress
```

if=/dev/sdb - откуда
of=/$HOME/Backup/image.img - куда
bs=1M - размер одного блока при передаче данных (влияет на скорость записи)

    с - один символ;
    b - 512 байт;
    kB - 1000 байт;
    K - 1024 байт;
    MB - 1000 килобайт;
    M - 1024 килобайт;
    GB - 1000 мегабайт;
    G - 1024 мегабайт.

count=2578 - количество записываемых блоков
conv=noerror,sync - norerror -игнорировать ошибки, sync -записывать 0 в ошибочные секторы, чтобы не нарушить структуру
status=progress - выводить в консоль сведения о процессе записи

образ можно сразу сжать при создании

```bash
sudo dd if=/dev/sdb bs=1M count=2578 conv=noerror,sync | gzip -c  > /$HOME/Backup/image.img.gz
```

3.  Восстановление образа
    если образ создавали без сжатия

```bash
sudo dd if=$HOME/Backup/image.img of=/dev/sdb bs=1M conv=noerror,sync status=progress
```

если создавали со сжатием

```bash
gunzip -c $HOME/Backup/image.img.gz | sudo dd of=/dev/sdb conv=noerror,sync status=progress
```
