Этот вопрос отвечает на вопрос о том, как я использую внешний компьютер для создания резервной копии моего RPi.
Мне интересно, могу ли я создать резервную копию SD-карты, которая используется в настоящее время, и скопировать ее в файл на USB-устройстве хранения данных. Это возможно? Если нет, есть ли способ создать резервную копию RPi без участия другого компьютера?
dd
, посмотрите вrsync
.dd
копии с соответствующим размером блока, вероятно, будет самым быстрым для «новой» копии. Делать копирование файлов на флэш / SD-носитель - плохая идея.Ответы:
Вот вступление к использованию
rsync
для резервного копирования на Pi. После создания первоначальной резервной копии ее обновление будет намного быстрее, чем постоянное копирование всего изображения. Вы можете сделать это на локальном жестком диске или по сети.На самом деле вам не нужна полная копия работающей системы в качестве резервной копии, поскольку некоторые вещи якобы в файловой системе существуют только во время выполнения. Включение этого в резервную копию и последующее использование ее для воссоздания образа позже может создать проблемы для вас.
Есть и другие исключения.
rsync
может принять список ( глобальных ) шаблонов для исключения, и их можно прочитать из файла, поэтому давайте сначала рассмотрим, что должно быть в таком файле. Обратите внимание, что записи имеют форму,/directory/*
а не/directory
. Это потому, что мы хотим, чтобы они существовали, но мы не хотим копировать в них что-либо.Они действительно не существуют на диске. Это интерфейс к ядру, который создает и поддерживает их в памяти . Если вы скопируете их, а затем скопируете обратно в систему и загрузите их, это будет (в лучшем случае) бессмысленно, поскольку ядро использует их в качестве точек монтирования для интерфейсов [Если вы хотите увидеть, что происходит при монтировании раздела файловой системы в каталоге с данными, попробуйте. Это работает и не принесет никакого вреда, но то, что было в каталоге, теперь недоступно.]
Обратите внимание, что очень важно, чтобы точки монтирования
/sys
и/proc
существовали. Но они не должны содержать ничего. Следующий:dev
Каталог не совсем то же самое , какproc
и ,sys
но для наших целей. Если вы считаете, что должны сохранить это, чтобы в резервной копии могли быть одинаковые узлы устройства или что-то в этом роде, вы ошибаетесь . Не беспокойся Не копируйтеdev
. Когда-то давным-давно Linux работал таким образом, но больше не работает.Это особый случай с большинством (возможно, со всеми) дистрибутивов Pi, таких как Raspbian. На самом деле это точка монтирования первого, vfat, раздела. Мы собираемся разобраться с этим отдельно. Что бы вы ни делали, не стесняйтесь включать это здесь, потому что, опять же, это точка монтирования.
/run
как правило, не на диске, а в памяти. Возможно,/tmp
может быть слишком (это сэкономит немного действия SD-карты), но в любом случае, как видно из названий, это не места для хранения постоянных данных. Приложения, которые их используют, ожидают, что они могут быть удалены при каждой загрузке.Это особенно важно, если вы планируете выполнять резервное копирование на жесткий диск или USB-накопитель, а устройство подключено
/mnt
или/media
(автомонтирование имеет тенденцию использовать последнее), потому что если вы не исключите расположение этих устройств в файловой системе, вы будете создайте цикл резервного копирования содержимого диска на себя, пока он не исчерпает пространство. Я думаю,rsync
может быть достаточно умен, чтобы заметить что-то глупое, но постарайтесь не проверять предпосылку.О фактическом резервном копировании: Создайте каталог для резервного копирования на локально смонтированном жестком диске, USB-устройстве и т. Д., Например, «pi_backup». Вы можете поочередно выполнять резервное копирование в удаленное местоположение с помощью
ssh
(см. Ниже) или с помощью сетевой файловой системы, но это, вероятно, займет некоторое время в первый раз.Если файл, содержащий список для исключения, равен
/rsync-exclude.txt
1, а ваш диск -/mnt/usbhd
для выполнения фактического резервного копирования:Обратите внимание, что на конце есть косая черта
pi_backup/
.Это займет некоторое время и даст много выходных данных (если вы хотите проверить это в журнале, добавьте
> rsync.log
).--delete
первый раз бессмысленно, но для сохранения резервной копии используйте его. Это гарантирует, что материал, который вы позже удалили на Pi, также будет удален из вашей резервной копии.a
Наборы рекурсии в каталогах и убеждается все атрибуты файла соответствия.-H
для сохранения жестких ссылок 2 ,v
для многословных, поэтому вы получаете некоторые выходные данные (в противном случаеrsync
тихо). Смотритеman rsync
больше.Существует ярлык, с помощью которого вы можете пропустить
--exclude-from
файл. Если вы уверены, что все вещи, которые вы не хотите копировать (/tmp
и т. Д.), Находятся в отдельных файловых системах, вы можете просто использовать:-x
был вставлен. Это краткая форма--one-file-system
, которая говоритrsync
не пересекать границы файловой системы. Лично я предпочитаю--exclude-from
, но, например, по умолчанию Raspbian,--one-file-system
будет работать нормально. Вы можете использовать оба, если вы хотите быть-x
осторожным: DЭто не совсем полная резервная копия. Достаточно, если вы ничего не вставили
boot
и у вас все в порядке с резервным копированием, чтобы просто восстановить систему, вставив карту в компьютер и запустив:Вы также можете сделать это с картой с новым изображением (при условии, что она совпадает с вашим базовым изображением), хотя это немного неэффективно, если вам нужно создать изображение (потому что вы собираетесь перезаписать большую его часть). Вы также можете подключить другую SD-карту через USB-адаптер с таким изображением на нем и использовать описанный выше метод для сохранения дубликата карты.
Если вы добавили что-то
/boot
(например, собственное ядро), в том числе/boot/config.txt
, вы тоже захотите это сделать (довольно просто - тут не так много). Просто сделайте это отдельно, и когда вы восстановите, этот материал будет помещен в первый раздел.Посмотрите здесь, если вы хотите создать пустой образ в стиле Raspbian, который вы можете затем сделать резервную копию в. Вы можете использовать аналогичную методологию для создания пустой карты в стиле Raspbian - вместо того, чтобы иметь дело с
.img
файлом, вы будете иметь дело с реальным устройством (например/dev/sdb
), то есть все, что вам нужно сделать, это создать таблицу разделов,fdisk
а затем формат/dev/sdb1
иsdb2
(или что-то еще) сmkfs
.Но копировать все изображение проще! Зачем беспокоиться об этом?
Это не так сложно; Я восстановил на пустую карту (отформатированную по последней ссылке) за 10 минут. Да, просто использовать
dd
в целом все проще (если вы находите такие вещи, как слова, сбивающие с толку ...), НО тогда требуется довольно много времени каждый раз, когда вы хотите обновить резервную копию, потому что вы должны делать 100% каждый раз. Используяrsync
, когда резервная копия существует, ее обновление происходит намного быстрее, поэтому вы можете настроить ее так, чтобы она происходила безболезненно каждый день через cron. По сети даже. Каждые шесть часов. Чем чаще вы это делаете, тем меньше времени это займет.rsync
черезssh
Вот пример:
«Опции» будут, например,
-av --delete --exclude-from=/rsync-exclude.txt
и «опции ssh» - это то, что вы обычно используете (если что-нибудь). Вы должны иметь корневой доступ черезssh
сделать это для целей резервного копирования системы (устанавливаетсяPermitRootLogin=yes
в/etc/ssh/sshd_config
и перезапустить сервер).1 Вы должны сохранить этот файл. Вы можете размещать комментарии в строке, начинающейся с
#
или;
. Это может включать в себя фактическуюrsync
команду, которую можно скопировать позже, чтобы вам не приходилось запоминать ее каждый раз.2 Спасибо Крису за то, что он
rsync
не указал это автоматически.источник
mkdir /tmp/backupable && mount --bind / /tmp/backupable
и не использовать rsync? Это также имеет преимущество в резервном копировании любых данных, хранящихся в местах, которые «затенены» чем-то, установленным там.--exclude-from
- лучшая идея. Если у вас есть время, вы можете записать это как отдельный ответ, у вас есть мой голос, и я могу сослаться на это. Этот ответ достаточно многословен..img
вы можете создать ; это и это должно помочь объяснить, как они структурированы и могут быть созданы.Рабочий сценарий от Raspberry Community, сделанный участником.
Вы можете повторно использовать и настраивать код так, как вам нравится. Он хорошо документирован и говорит сам за себя.
Подумайте о том, чтобы добавить комментарии на оригинальный форум или опубликовать свою собственную версию, чтобы улучшить содержание. Возьми немного, дай немного.
* И спасибо, что вернули AndersW (Click for GIT script)
источник
rsnapshot
звучит многообещающеrsync
способ идти; когда у меня будет время завтра я добавлю ответ.rsnapshot
Также стоит исследовать.Я адаптировал ответ @goldilocks на rsync для резервного копирования на пи. Я делаю резервную копию на
ext4
раздел на жестком диске, установленном на Pi. Если жесткий диск не подключен, rsync будет копировать в каталог подключения (до тех пор, пока SD-карта не будет заполнена). Если жесткий диск не установлен вrw
режиме, появляются обильные сообщения об ошибках. Ничего из этого не желательно, поэтому я проверяю, что мой раздел смонтирован вrw
режиме, прежде чем продолжить.ПРИМЕЧАНИЕ 2015-03-03 Я изменил свой ответ, чтобы точно копировать жесткие ссылки. Оригинал работал, но конвертировал много жестких ссылок в файлы. В дополнение к потере места, это ставит под угрозу многие виды использования, которые предполагают наличие жестких ссылок. (Мое текущее изображение имеет 869 ссылок, многие в самом Распбиане.)
Мой скрипт для этого следует. (Мой раздел
PiData
установлен на/mnt/PiData
Восстановите (или обновите другой Pi) с помощью следующего: -
Я улучшил,
rsync-exclude.txt
чтобы устранить ненужные файлы.Первая группа - это каталоги, задокументированные @goldilocks https://raspberrypi.stackexchange.com/users/5538/
Вторая группа - это файлы и каталоги, созданные OS X, когда я получаю доступ к своему Pi с помощью AFP (Apple Filing Protocol). (Обычно они невидимы в OS X, но не в Raspbian. В любом случае резервное копирование не требуется.) Даже если вы никогда не используете AFP, это не принесет вреда.
Третья группа - это файлы, для которых не требуется резервное копирование (и, конечно, они не копируются на другой Pi). Примеры fake-hwclock.data, отчеты RPi-Monitor. У вас, вероятно, будут другие.
источник
У меня есть три Pis, работающие в моей локальной сети, и мне нужно делать резервные копии на регулярной основе с помощью cron, когда они запущены и работают. Вот почему я создал скрипт, который может создавать резервные копии dd, tar и rsync и восстанавливать их. Я предпочитаю использовать rsync для своих резервных копий, но другие люди предпочитают dd или tar. Он уже используется многими людьми. Надеюсь, что это полезно и для других :-) raspibackup - Raspberry создает резервные копии себя
источник
Вот наш стабильный инструмент для таких целей: https://github.com/aktos-io/aktos-dcs-tools
Этот инструмент записывается
make ssh
соединенийmake backup-root
,make mount-root
из глубинки в виду в первую, а затем локальные сеансы добавляются. Таким образом, он поддерживает локальные резервные копии, прямые удаленные резервные копии, резервные копии по доверенности. Резервные копии создаются постепенно (передаются только разности), а каталоги резервного копирования автономны (просто выберите каталог / версию для восстановления, у любого каталога есть полная резервная копия). Конечно, у вас есть версии (backup.last-0 - самая новая). Вы можете прервать процесс резервного копирования в любое время и продолжить позже.Вот инструкции для вашей конкретной проблемы:
РЕДАКТИРОВАТЬ
Теперь добавлена новая цель: вы можете создать физическую SD-карту из ваших резервных копий с помощью одной команды:
Следуйте инструкциям, создайте свою SD-карту, загрузите RaspberryPi с этой вновь созданной SD-карты.
источник
Здесь совершенно другой подход. Вы можете использовать LVM ( L ogical V olume M anager) для создания последовательных резервных копий. Помимо других улучшений, таких как простое добавление, расширение и уменьшение объема хранилища или восстановление операционной системы до более раннего состояния из снимка, вы также можете создавать резервные копии. Вам не нужно беспокоиться о динамически изменяемых файлах во время резервного копирования, настройки файловых систем только для чтения, исключая определенные каталоги или что-то еще. С помощью LVM вы просто создаете моментальный снимок, монтируете этот моментальный снимок и делайте его резервные копии любым способом. Вы можете сделать копию с помощью
cp -a
, сделать зеркало сrsync
, сделать архив сtar
или сделать изображение сdd
, Предполагая, что вы установили устройство резервного копирования,/mnt/usbhd/pi_backup/
вы можете сделать, например:Настройка LVM занимает всего один раз . Как это сделать, вы можете посмотреть на легкие резервные копии и снимки работающей системы с LVM .
источник
Я нашел инструмент резервного копирования, который делает устанавливаемые изображения.
Также есть утилиты для монтирования и сжатия изображений.
Это может быть полезно для других
Документация, которая идет с этим, очень кратка, поэтому я отмечаю следующее: -
ext4
отформатированный раздел на вашем Pi в/mnt
или/media
(любой формат, который допускает большие файлы и поддерживается Pi, например, exFAT или сетевой диск можно использовать)./mnt/Image/BusterBackup.img
Я немного изменил оригинал (для копирования точек монтирования), чтобы правильно рассчитать смещения и размеры разделов, и добавил пару комментариев.
источник
Откройте терминал и введите «lsblk -f».
Это должно показать все подключенные устройства хранения.
Затем введите 'dd if = / dev / [ИМЯ вашей SD-карты] bs = 1M'.
Это займет некоторое время, поэтому вы можете запустить его в фоновом режиме.
Это точно так же, как вы делаете резервную копию вашей SD-карты в Linux.
источник