Как мне сделать резервную копию моей малины?

Я пишу программы для своей малины Pi (работает на Raspbian) в течение нескольких недель и хочу, чтобы я защитил работу, которую я сделал.

Как я могу создать резервную копию файлов, которые я создал?

Можно ли просто подключить SD-карту к компьютеру с Windows (XP или 7) и скопировать его на жесткий диск или на другую SD-карту?

273 голоса | спросил Steve Robillard 14 J0000006Europe/Moscow 2012, 22:27:47

17 ответов


271

Если вы хотите сохранить все данные, вам, вероятно, придется создать образ диска. Кроме того, Windows не может распознать типичные файловые системы Linux, поэтому вы, вероятно, даже не сможете увидеть свои файлы при подключении к SD-карте.

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

Linux

В Linux вы можете использовать стандартный инструмент dd:

dd if=/dev/sdx of=/path/to/image bs=1M

Где /dev/sdx - ваша SD-карта.

Mac

На Mac вы также можете использовать стандартный инструмент dd со слегка отличающимся синтаксисом:

dd if=/dev/rdiskx of=/path/to/image bs=1m

Где /dev/rdiskx - ваша SD-карта.

(использование rdisk предпочтительнее, поскольку его исходное устройство - быстрее)

Чтобы узнать, на каком диске находится ваше устройство, введите diskutil list в командной строке - также вам может потребоваться root; для этого введите sudo -s и введите свой пароль при появлении запроса.

Окна

Вариант 1

В Windows вы можете использовать обратный процесс, который вы использовали при мигании SD-карты.

Вы можете использовать Win32 Disk Imager , который является предпочтительным инструментом для мигания SD-карты Фонд. Просто введите имя файла (расположение и имя файла резервной копии, который нужно сохранить), выберите устройство (SD-карту) и нажмите кнопку:

Win32 Disk Imager

Конечно, вы также можете использовать RawWrite , dd для Windows или аналогичные инструменты, процесс довольно схож.

Вариант 2

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

Другой вариант - скопируйте файлы в удаленную систему с помощью rsync .

Вы также можете установить специальные драйверы, чтобы ваши Windows могли читать файловые системы ext (и, следовательно, могли бы читать всю SD-карту), например ext2fsd , но это, вероятно, не стоит усилий.


Поскольку изображение будет иметь тот же размер, что и ваша SD-карта, вы можете сжать его. Это может быть достигнуто просто с помощью вашего любимого инструмента сжатия, такого как gzip, 7zip, WinZip, WinRar ...

ответил amrit kumbhakar 2 J000000Monday18 2018, 15:44:18
141

Если вы используете Linux, вы можете использовать команду dd, чтобы сделать полную резервную копию изображения:

dd if=/dev/sdx of=/path/to/image

или для сжатия:

dd if=/dev/sdx | gzip > /path/to/image.gz

Где sdx - ваша SD-карта.

Чтобы восстановить резервную копию, вы меняете команды:

dd if=/path/to/image of=/dev/sdx

или при сжатии:

gzip -dc /path/to/image.gz | dd of=/dev/sdx
ответил Jivings 14 J0000006Europe/Moscow 2012, 22:37:29
30

Помимо этих резервных копий на уровне блоков существуют два общих подхода к работе с источниками: архивировать их непрерывно (1) или использовать систему контроля версий (2).

Мы собираемся использовать командную строку (любой локальный терминал или соединение SSH с машиной малины Pi), не так ли?

1. Архив

cd ~/projects
tar czvf your-raspberry-project-top-level-dir-v1.0.tgz \
         ./your-raspberry-project-top-level-dir 
scp your-raspberry-project-top-level-dir-v1.0.tgz \
         [email protected]:/home/user/backups/

2. RCS (например, Git)

cd ~/projects/your-raspberry-project-top-level-dir
make clean                          # Or clean it manually using rm (rm ./*.o ./*.pyc)
git init                            # Create new repo here
git add .                           # Add source files to the staging index
git status                          # Verify if it's OK
git commit -a -m "Initial import"   # Fix application's source changes
git add remote https://github.com/user/your-raspberry-project.git
git push -u origin master           # Sends the sources to your github repo
git pull && git push && git status  # Now origin/master is your tracking branch
ответил okertanov 2 PM00000020000003731 2012, 14:00:37
25

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

ssh [email protected] gzip -c /dev/mmcblk0 > img.gz

В качестве предварительного условия вам нужно создать сгенерированные ключи .ssh и скопировать код id_XXX.pub в /root/.ssh/authorized_keys.

У вас могут возникнуть проблемы с файловой системой, поскольку это резервная копия в реальном времени, но если ваш малиновый Pi не занят, обычно будет нормально.

Вероятно, быстрее сделать компрессию на ПК следующим образом:

ssh [email protected] dd if=/dev/mmcblk0 | gzip -c > img.gz
ответил John La Rooy 2 AM00000090000001531 2012, 09:07:15
24

На Mac вы не хотите использовать /dev/diskn. Вместо этого следует использовать /dev/rdiskn, где n - номер, используемый ОС для идентификации вашей SD-карты. Это уменьшает время, необходимое для копирования на огромную сумму.

Итак, для оптимального процесса резервного копирования на Mac я рекомендую сделать следующее:

Запустите diskutil list и найдите диск, соответствующий вашей SD-карте Raspberry Pi:

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            499.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *7.9 GB     disk1
   1:             Windows_FAT_32                         58.7 MB    disk1s1
   2:                      Linux                         7.9 GB     disk1s2

Очевидно, что /dev/disk1 - моя 8-Гбайт SD-карта, имя раздела Linux также немного похоже.

Однако вместо использования /dev/disk1 с dd, вы должны использовать /dev/rdisk1, например:

sudo dd if=/dev/rdisk1 of=/path/to/backup.img bs=1m

И чтобы восстановить его, просто поменяйте параметры if (входной файл) и of (output file):

sudo dd if=/path/to/backup.img of=/dev/rdisk1 bs=1m

Или, с gzip, чтобы сохранить существенное количество пространства:

sudo dd if=/dev/rdisk1 bs=1m | gzip > /path/to/backup.gz

И, чтобы скопировать изображение обратно на SD:

gzip -dc /path/to/backup.gz | sudo dd of=/dev/rdisk1 bs=1m

Для получения дополнительной информации см. страницу этой вики .

ответил Alex Coplan 28 FriEurope/Moscow2012-12-28T18:40:00+04:00Europe/Moscow12bEurope/MoscowFri, 28 Dec 2012 18:40:00 +0400 2012, 18:40:00
18

Если вы используете Windows:

  1. Скачайте Win32 Disk Imager.

  2. Создайте путь к файлу, который вы хотите использовать для сохранения изображения. (Я использую C: \ RasPi_Bkp)

  3. Запустите Win32 Disk Imager

  4. Перейдите к месту пути к файлу резервной копии и введите имя файла.

  5. Нажмите «Сохранить»

  6. Убедитесь, что устройство, показанное в раскрывающемся списке справа от вашего пути к файлу, - это тот, который вы хотите создать резервную копию.

Win32 Disk imager in Action

  1. Нажмите «Читать»

  2. Wait.

ответил zenbike 5 J000000Thursday12 2012, 13:56:30
9

Если ваши программы все находятся в pi userid, нет оснований для резервного копирования всей файловой системы, как это предлагается. я просто хочу создать резервную копию одного идентификатора. Я запустил команду:

tar -czf pi.tgz *

из домашнего каталога pi, который создает файл pi.tgz, содержащий все файлы и каталоги, содержащиеся там (исключая скрытые файлы). Затем я просматриваю этот файл на другом компьютере linux, но вы можете его скачать или отправить по электронной почте где-то для безопасного хранения ... все, что попало на другой компьютер.

Это создает гораздо меньший файл для резервного копирования.

Обеспокоена всеми дополнительными пакетами, которые вы установили на этом пути? Создайте сценарий, который будет выполнять эти установки для вас снова, если вам нужно воссоздать свою SD-карту и сохранить ее в домашнем каталоге pi. (У меня есть каталог ~ /bin для таких вещей). Имейте все команды, необходимые для установки, чтобы вернуть вас в позицию, в которой вы хотите находиться. Он документирует ваши изменения и позволяет быстро создать новую SD-карту. Он будет содержать команды в форме:

apt-get --assume-yes install apache2 mysqld mysql php5 php-pear

Запустите его с помощью

apt-get update
apt-get --assume-yes upgrade

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

Так как это будет в вашем файле pi.tgz, вы получите его, когда вам это нужно.

ответил Robert Nix 2 PM00000040000005631 2012, 16:48:56
8

Я запускаю Raspbian и использую dd и cron для автоматического резервного копирования SD-карты на внешний USB-накопитель.

Это действительно простое решение. Он работает один раз в неделю в 2 часа утра в понедельник утром и создает изображение SD-карты.

Я написал сценарий, который отключает такие службы, как lighttpd и cron, чтобы свести к минимуму риск записи SD-карты в середину резервной копии, затем он вызывает dd, прежде чем приступать к сервисам снова, когда резервная копия закончил.

Я поместил скрипт и некоторые инструкции в свой блог, http: //www.stuffaboutcode.com/2012/08/raspberry-pi-auto-backups.html

ответил Martin O'Hanlon 2 +04002012-10-02T16:51:07+04:00312012bEurope/MoscowTue, 02 Oct 2012 16:51:07 +0400 2012, 16:51:07
4

Для Debian вы можете использовать dd и tar. Это сделало бы полную копию вашей SD-карты и потребовало бы внешнего (на SD-карту) хранения, возможно, смонтированного USB или сетевого диска.

dd if=/dev/sdd of=yourbackupfilenamehere.dd
tar zcvf yourbackupfilenamehere.dd.tar.gz

С /dev /sdd находится местоположение вашей SD-карты, а of - имя выходного файла.

ответил Forkrul Assail 5 J000000Thursday12 2012, 14:33:55
4

К счастью, Raspberry Pi может создать резервную копию, которая не зависит от основной ОС, используемой для доступа к малине (Windows, Linux, Mac). dd, tar и rsync - это разные инструменты для создания резервных копий в Linux. Все эти типы резервных копий могут быть созданы запущенным Pi, если он останавливает все занятые задачи как mysql, smb, dlna, owncloud, seafile, apache и др. Перед созданием резервной копии. Существует другой вопрос: подход объясняется более подробно, и здесь рассматривается возможное решение

ответил framp 20 SatEurope/Moscow2014-12-20T02:25:10+03:00Europe/Moscow12bEurope/MoscowSat, 20 Dec 2014 02:25:10 +0300 2014, 02:25:10
3

Если ваша Raspberry Pi подключена к сети, и вы хотите автоматическое резервное копирование на лету, возможно, самым простым способом является Bittorent Sync - очень простая установка и работа на плавном и стабильном уровне на Pi и многих других платформах.

ответил ir11 31 WedEurope/Moscow2014-12-31T00:08:38+03:00Europe/Moscow12bEurope/MoscowWed, 31 Dec 2014 00:08:38 +0300 2014, 00:08:38
1

Вот 3 варианта:

  1. В последней версии Raspbian есть инструмент, который преобразует вашу ОС и файлы в файл .img, который затем можно разместить на USB или на вашем ПК.

  2. Подключите свою SD-карту к ПК с Windows и запустите Win32 Disk Imager (установите здесь , если вы еще этого не сделали.)

    В (1) введите имя файла & место для файла изображения. В (2) выберите букву диска вашей SD-карты. Затем нажмите 3. Это делает то же самое, что и вариант 1.

  3. Подключите USB-накопитель к вашему Pi и скопируйте любые важные файлы.

ответил Oliver 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 25 Sep 2016 19:30:41 +0300 2016, 19:30:41
1

* Нет более страшного dd, sync, tar, ..., начинающего дружественного карточного копира SD-карты *

Новая версия rpi OS под названием растяжка имеет очень новаторское приложение под названием SD Card Copier. Вам не нужно использовать инструменты linux, такие как dd и т. Д. Он может даже скопировать большие карты на маленькие карты.

* Как это сделать *

Вы начинаете с значка меню приложения GUI Rpi в самом верхнем левом углу, перейдите в «Аксессуары», затем нажмите «Копир SD-карты».

Все, что вам нужно сделать, это сделать несколько кликов внутри GUI!

После того, как вы сделаете резервную SD-карту, вы можете использовать Диспетчер дисков Windows, чтобы прочитать образ карты в файл Windows и сохранить ее в любом каталоге Windows. Таким образом вам нужна только физическая SD-карта и хранить много версий изображений на ПК с ОС Windows.

Конечно, вы можете просто использовать резервную копию в качестве рабочей копии, чтобы заменить исходную карту, которая теперь становится вашей основной картой, и заблокировать ее в надежном месте.

ответил tlfong01 30 AMpMon, 30 Apr 2018 08:05:19 +030005Monday 2018, 08:05:19
0

Во время поиска для создания изображения моей настроенной SD-карты я нашел этот пост. В лучшем ответе здесь рассматривается изображение SD-карты, но то, что я искал, требует сокращения файловой системы, чтобы сделать изображение как можно меньше. Я закончил создание своего собственного инструмента для этого и описал процесс по адресу: https://raspberrypi.stackexchange.com/a/37899/32585

ответил berto 4 32015vEurope/Moscow11bEurope/MoscowWed, 04 Nov 2015 17:39:18 +0300 2015, 17:39:18
0

Это приложение для Android будет считывать SD-карту в файл .img и застегивать ее в одно и то же время: https://play.google.com/store/apps/подробности? ID = com.redrobe.raspicardimager

ответил Mike Redrobe 24 Jpm1000000pmTue, 24 Jan 2017 14:42:08 +030017 2017, 14:42:08
0

Я создал утилиту для резервного копирования малины pi, если вы Linux. Это также уменьшит изображение вашего малинового пи, поэтому вы можете поместить .iso на меньшую SD-карту: RaspberryPiShrink

Это запустит скрипт python, который проведет вас через этот процесс. Просто подключите карту microSD к компьютеру Ubuntu, Linux Mint или Debain и следуйте инструкциям в терминале.

ответил Audstanley 14 J0000006Europe/Moscow 2018, 22:15:43
-2

Я использую usbit для Windows. Это единственный инструмент, который я могу найти, что позволит вам обмениваться с более крупной SD-картой на меньшую. Все, что я сделал, это отметить следующее на странице параметров; Игнорировать проверки размера и Обрезать негабаритные изображения .

Это позволило мне поменять OpenELEC и изображения Xbian с 16-гигабайтной SD-карты класса 4 на карту класса 8 ГБ класса 10.

Это намного проще, чем изменение размеров таблиц разделов и т. д.

ответил Craig 6 +04002012-10-06T01:41:57+04:00312012bEurope/MoscowSat, 06 Oct 2012 01:41:57 +0400 2012, 01:41:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132