Системный образ работающей системы Debian?

22

Возможно ли сделать резервную копию работающей системы Debian в виде файла образа, который можно просто записать обратно на другой жесткий диск с помощью dd в случае сбоев в исходной (резервной копии) системы Debian?

Я особенно ищу инструмент, непосредственно доступный в репозиториях, так как у меня Debian Wheezy, работающий на Raspberry Pi, и поэтому мне нужна поддержка архитектуры ARM, которая достаточно надежна для пакетов из репозиториев Debian.

stefan.at.wpf
источник
2
Я бы не рекомендовал пытаться получить блочную копию из файловой системы, смонтированной на rw. Самая маленькая запись может повредить ее, и вы думаете, что у вас есть работоспособная резервная копия. Таким mount -o remount,roобразом, диск, который вы копируете, если вы выбираете dd, dumpили подобное. Копирование в файловую систему rsyncлюбым другим способом, в том числе cpбезопасным для действующей системы.
Причудливый Вомбат

Ответы:

15

ddЭто хорошо, если вы не возражаете против создания файла образа, который точно соответствует размеру вашего необработанного диска. rsyncэто хорошо, если вы хотите легкий доступ на уровне файлов. Но стандартным средством резервного копирования файловой системы является dumpи restore( aptitude install dump).

Для такого устройства, как Raspberry Pi, я бы сделал резервную копию следующим образом, предполагая, что таблица разделов MS-DOS и диск - / dev / sda:

  • dd if=/dev/sda of=sda-boot-sectors.img count=2048 получить образ загрузочного раздела диска.
  • fdisk -lu /dev/sda >sda-partition-table.txt для последующего использования человеком.
  • dump -0af sda1-root-level0.dump /dev/sda1 и повторите для каждого раздела, который вы хотите создать резервную копию.

Затем вы можете сжать партию и оставить ее в безопасном месте. Чтобы восстановить, вы должны использовать ddдля восстановления таблицы разделов и загрузочных секторов, перезагрузить таблицу разделов, создать новую файловую систему (ы) и использовать cd /mnt/new-filesystem; restore -rf /some-location/sda1-root-level0.dump.

Плюсы:

  • dump получает полную копию файловой системы, включая ACL, расширенные атрибуты, владельца, разреженные файлы, специальные атрибуты файловой системы - все сбрасывается как есть.
  • Он будет копировать только нужные вам блоки, игнорируя неиспользуемые.
  • Это стандартный инструмент Unix и может быть прочитан многими другими инструментами Unix.

Недостатки:

  • он создаст поврежденные снимки, если файловая система будет записана во время дампа
  • сложнее смонтировать резервную копию образа (что можно сделать с образами дисков) или получить доступ к отдельным файлам (которые можно получить с помощью rsyncрезервных копий).
  • Это зависит от типа файловой системы. Вы можете создать дамп ext3файловой системы и восстановить ее в ext4одной, но вы можете создать дамп файловой системы любого типа. Большинство зрелых файловых систем имеют свои собственные dumpверсии. Стандартный Debian dumpделает ext2, ext3и ext4. Если вы используете специфичную для Flash файловую систему, ваши параметры могут отличаться.
Алексиос
источник
На странице руководства не указано, dumpчто файловая система не должна быть записана. Я имею в виду, это звучит как разумное ограничение, но жаль, что это не упомянуто на странице руководства, так что кто-то может сделать эту ошибку ...
imz - Иван Захарящев
Благодаря вашему посту я узнал об этом инструменте (dump / restore). Я собираюсь использовать его, чтобы сделать копию файловой системы с чем-то вроде:mkfs.ext4 /dev/sda1; mount /dev/sda1 /mnt/disk; cd /mnt/disk; dump -0af - /dev/sda5 | restore -rf -
imz - Иван Захарящев
5

Используйте ddдля загрузочного сектора и rsync -aHSдля файлов. Вы должны исключить «виртуальные» файловые системы, такие как / proc / sys и любые RAM-диски (tmpfs).

Если вы также хотите сохранить разделение, вы можете сбросить его с помощью sfdiskили создать заново parted.

Nils
источник
Спасибо, звучит очень интересно, ты уже говорил об этом в прошлом? Как мне создать полное изображение из этих частей, просто используя устройство loopkack? (Да, хотите сохранить разделы и т. Д. Хотите, чтобы изображение было готово для записи на новую SD-карту / диск без дополнительных
действий
@ stefan.at.wpf Я только что перепутал некоторые из своих решений для клонирования виртуальных машин, создания физических серверов (autoyast / kistart), создания зеркала raid1 из не зеркальной системы и обычного способа репликации (статических) частей файловая система для узлов кластера. Я не использую этот myselv. Мой метод будет состоять в том, чтобы автоматически установить новый сервер (включая клиента резервного копирования), а затем восстановить с помощью резервной копии содержимое старого сервера на новый сервер.
Нильс
4

Для Debian вам действительно нужно только создать резервную копию ваших данных и файлов конфигурации .

Для резервного копирования существующего состояния:

  • Резервное копирование пакетов с помощью dpkg --get-selections > dpkg_selections.
  • Создайте резервную копию базы данных debconf с помощью sudo debconf-get-selections > debconf_selections.

Чтобы применить это к новой системе:

  • Сначала примените выбор debconf с помощью sudo debconf-set-selections < debconf_selections.
  • Применить выбор пакетов с dpkg --set-selections < dpkg_selections.
  • Установить пакеты с apt-get dselect-upgrade.

Ваши данные должны быть в основном /homeи /var(например, /var/lib/mysqlдля MySQL, /var/wwwдля Apache и т. Д.). Вы должны быть в состоянии выяснить, какие приложения важны для вас.

Конфигурация будет в основном в /etc. Опять же, не должно быть трудно выбрать то, что важно для вас.

bahamat
источник
Чтобы debconf-get-selectionзапуститьapt-get install debconf-utils
пандита
1

Я не знаю, хорошо ли это делать, когда система работает, но это то, что я делаю.

sudo dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M

как я уже сказал, может быть, есть лучшее решение, в таком случае я бы тоже хотел это знать!

Emil
источник
1

Я пробовал так много программного обеспечения для резервного копирования и восстановления и никогда не был счастлив. Вот что я делаю сейчас: у меня установлен второй Debian на запасном компьютере (тот же МБ, карта NIC и т. Д.). Каждый вечер я выполняю rsync с компьютера A на компьютер B. Есть некоторые файлы, которые я сдерживаю (/ etc / network / interfaces, / etc / hosts, / etc / hostname), так как я не хочу конфликтов двух работающих систем. На самом деле, у меня есть их копии в другой папке. Я также отключаю некоторые службы, которые мне не нужны для запуска на компьютере B (postfix, mysql и т. Д.). У меня есть сценарий, написанный на компьютере B, который в основном превратит его в компьютер A (замените те файлы, которые я удерживал), перезапустите сетевой адаптер и включите отключенные службы. Конечно, машина А должна быть выключена, когда я запускаю сценарий, иначе произойдет хаос. Я тестирую машину B ежемесячно, выключая машину A, запуская скрипт, и делать некоторые тесты, чтобы убедиться, что он обновлен и работает правильно. Работает как часы!

Джозеф Вернис
источник
0

Проверьте Клонезилла. Я вижу это в стандартных репозиториях Debian. http://clonezilla.org/

Изменить: Вероятно, нет, требования к списку Clonezilla на их главной странице: "Процессор X86 или x86-64"

Тим
источник
Интересный проект, спасибо, в любом случае :-)
stefan.at.wpf
0

Чтобы создать резервную копию пи, я вынимаю карту microSD и подключаю ее к ноутбуку. Затем запустите ddдля создания на моем ноутбуке файла всего диска, как указано выше:

dd if=/dev/mmcblk0 of=/path/to/backup/directory/backup.img bs=1M
боб
источник
2
Это буквально игнорирование самой важной части вопроса. Вопрос заключается в том, как создать образ системы в реальном времени, и к тому времени, когда вы перемещаете диски, вам лучше выключить систему.
Сирены
0

Используйте систембак. Я работал даже с Debian Stretch. Это дает вам хороший живой загрузочный USB с точно настроенным рабочим столом.

Питер
источник