ФОН

ФОН

ФОН

SD-карта была настроена для Raspberry pi. Цель состоит в том, чтобы точно скопировать SD-карту (ОС, приложения, данные), чтобы реплика функционировала в rPi точно так же, как оригинальная \ мастер-карта SD.

ОБНОВЛЕНИЕ: Предположим:

  • Репликация будет выполняться на ноутбуке, настроенном на UNIX-подобную операционную систему.
  • репликация не должна выполняться из rPi
  • целевая SD-карта той же марки/модели
  • Исходная SD-карта разделена на разделы с различными файловыми системами:

введите описание изображения здесь

Вопросы

Какие варианты клонирования UNIX доступны для ноутбука HP с Ubuntu, слотом для SD-карт и USB-устройством чтения/записи SD-карт?

Имеет ли значение, является ли USB SD-карта RW устройством чтения или записи?

Цель (ограничение) — избежать покупки дополнительного оборудования.

Наблюдения за решением

date; sudo sh -c 'cat sdcard.image >/dev/mmcblk0'; date

Пн июн 3 17:53:18 EDT 2019 [sudo] пароль для пользователя: Пн июн 3 23:42:17 EDT 2019

date; sudo sh -c 'pv sdcard.image >/dev/mmcblk0'; date

Вт июн 4 00:33:50 EDT 2019 [sudo] пароль для пользователя: 119GiB 6:06:12 [5.56MiB/s] [==================================>] 100%
Вт июн 4 06:43:05 EDT 2019

Анализ gParted прошитой SD-карты показывает идентичное разбиение на разделы:

введите описание изображения здесь

MacOS\OSX

Чтобы найти местоположение SD-карты:

diskutil list

Обязательно отмонтируйте SD-карту перед записью на нее:

sudo diskutil unmount /dev/disk#

где # — это 1,2,3...

решение1

Если вы просто хотите скопировать данные с SD-карты с одной карты на другую, то вы можете сделать это с помощьюддв командной строке.

Вам НЕ следует делать это с вашего Raspberry Pi из его собственной ОС. Это связано с тем, что ОС может записать данные на SD-карту во время копирования и повредить копию.

Чтобы скопировать SD-карту, подключите обе к двум считывателям (неважно, USB они или нет). Затем проверьте содержимое /dev. Карты должны отображаться как /dev/sd*. Например /dev/sdb, . Будьте осторожны, так как ваш внутренний жесткий диск может быть уже включен. /dev/sda.

Убедитесь, что ни одна из SD-карт не смонтирована, прочитайте вывод, введя в командной строке следующее:

mount | grep /dev/sd

Также проверьте вывод, чтобы знать, какая карта имеет какое имя файла (как root):

sudo blkid

Чтобы фактически скопировать (например, из /dev/sdb в /dev/sdc), введите (как root):

dd if=/dev/sdb of=/dev/sdc bs=4096 status=progress

решение2

Системы Unix делают устройства хранения доступными черезфайл устройства. Файлы устройств ведут себя как обычные файлы во многих отношениях. В частности, чтобы сделать точную копию устройства хранения, вы просто копируете содержимое исходного устройства на целевое устройство.

Сначала вам нужно определить исходный файл устройства и целевой файл устройства. Имя зависит от вашего варианта Unix и того, как он настроен, но на практике файлы устройств всегда находятся в каталоге /dev. Если у вас смонтирована SD-карта, вы можете узнать, что такое файл устройства, с помощью

df /media/sdcard1/some/file/on/the/sdcard

Файл устройства находится в первом столбце. Другие инструменты могут предоставить ту же информацию, например, сообщения журнала ядра при вставке SD-карты или команда lsblkв Linux.

На карте могут быть разделы. Если это так, скопируйте всю карту, даже если там один раздел, поскольку часть информации о загрузке может находиться за пределами раздела. Например, если dfотображается /dev/sdb1в Linux, скопируйте /dev/sdbи не только /dev/sdb1.

Если вы вытащите SD-карту и вставите ее снова, на ней, как правило, будет то же имя файла устройства, что и раньше, но это не гарантируется.

Перед копированием убедитесь, что:

  • Исходное устройство не смонтировано или смонтировано только для чтения.
  • Целевое устройство вообще не смонтировано.
  • Целевое устройство по крайней мере такого же размера, как и исходное. В Linux lsblkотображает размер устройства.
  • У вас правильное целевое устройство. Обратите внимание, что команда ниже перезапишет его содержимое без запроса подтверждения!

Предположим, что вы определили, что исходное устройство — это /dev/sdb, а целевое устройство — это /dev/sdc. Чтобы скопировать содержимое, выполните следующую команду как root:

cat /dev/sdb >/dev/sdc

Если вы используете sudo, перенаправление >должно происходить от имени пользователя root, поэтому вам нужно написать что-то вроде

sudo sh -c 'cat /dev/sdb >/dev/sdc'

В качестве альтернативы, чтобы случайно не перезаписать не то устройство, можно выполнить два шага:

  1. Предоставьте пользователю ( gatorbackв моем примере) разрешение на чтение с исходного устройства ( dev/sdbв моем примере) и на запись на исходное устройство ( /dev/sdcв моем примере).
    sudo setfacl -m user:gatorback:r /dev/sdb
    sudo setfacl -m user:gatorback:w /dev/sdc
    
  2. Выполните копирование без sudo.
    cat /dev/sdb >/dev/sdc
    

Вы можете скопировать образ диска в файл, а затем скопировать файл образа на целевое устройство. Это полезно, если вам нужно сделать несколько копий, или если у вас есть только один считыватель SD-карт, или чтобы снизить риск копирования в неправильном направлении.

  1. sudo cat /dev/sdb >sdcard.image
  2. Выньте исходную карту и вставьте целевую карту.
  3. При желании проверьте содержимое,монтируем изображение, например sudo mount -o loop -r sdcard.image /mnt.
  4. sudo sh -c 'cat sdcard.image >/dev/sdb'

Если вы хотите удобно просматривать информацию о ходе выполнения, используйтеpvвместо cat( pvредко устанавливается по умолчанию, но доступен в виде пакета в большинстве дистрибутивов).

Связанный контент