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

Предполагая, что вы хотите делать это на каждой строке ввода и что смещение должно быть основано на 1 и выражаться в количестве символов, а не в количестве байт, POSIXly:

sed '
  s/^.\{585\}5.\{27\}/&0/;t
  s/^.\{585\}1.\{28\}/&0/'

Or:

awk 'length >= 613 && substr($0, 586, 1) == "5" {
       $0 = substr($0, 1, 613) "0" substr($0, 614)
       next
     }
     length >= 614 && substr($0, 586, 1) == "1" {
       $0 = substr($0, 1, 614) "0" substr($0, 615)
     }
     {print}'
5
28.07.2016, 04:19
4 ответа

Как вы упомянули, BTRFS может это сделать. Вот как я регулярно делаю резервную копию своего ноутбука (время безотказной работы которого составляет 9 недель, 5 дней, когда я это набираю).

В моей файловой системе BTRFS у меня есть подтомы. То, как вы разделяете свои данные на подтомы и как вы их вкладываете, здесь не имеет значения, если вы не используете корень файловой системы для хранения данных, для которых вы хотите создать резервную копию.

Следующие команды служат для иллюстрации синтаксиса и возможностей. Я рекомендую заключить их в сценарий, который запускается как cronjob или systemd.timer.

Чтобы сделать снимок подобома:

btrfs subvolume snapshot -r <source> <dest>

Чтобы сериализовать снимок:

btrfs send <snapshot>

Чтобы сериализовать снимок относительно более старого (т.е. разностного):

btrfs send -p <start> <end>

Для создания разницы, сжатия на лету и отправки в резервную копию сервер с мониторингом «прогресса»:

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh me@backup.server "cat > /backups/name.bz2"

Чтобы сделать то же самое, но воссоздать подсистемы BTRFS на сервере резервного копирования, а не просто сжатые потоки BTRFS:

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh me@backup.server "pbzip2 -d | \
    btrfs receive <target>"

Для восстановления примените ваши снимки к новой файловой системе BTRFS, через btrfs получить .


Дополнительная информация о инкрементных резервных копиях BTRFS

6
27.01.2020, 20:37

Как сказал @ mark-k-cowan, вы можете сделать это с помощью снимков btrfs. btrfs для меня слишком незрелый. Было бы лучше использовать zfs и его снимки. Как сказал @ brady-dean, моментальные снимки LVM не зависят от файловой системы. Снимки LVM могут иметь огромное негативное влияние на производительность.

У Acronis есть модуль ядра, который работает на уровне блоков для создания моментальных снимков. Драйвер блока данных - это модуль ядра GPLv2 (кхм, «бесплатное ПО»), который делает то же самое. (Отказ от ответственности: я никогда не использовал его.)

3
27.01.2020, 20:37

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

-1
27.01.2020, 20:37

Используйте rsync (или вариант, имя которого я скоро запомню и отредактирую в ...)

Сделайте с ним полное резервное копирование, а затем сделайте инкрементное (или дифференциалы)

Он также доступен на многих платформах, что позволяет выполнять резервное копирование в несколько разных ОС и обратно

См. также: https://serverfault.com/q/138287/146493

Это должно подойти для большинства файлов в работающей системе, если не для всех (некоторые, записываемые в файлы, будут усечены, но это нормально, если вы выполняете резервное копирование во время работы) (вы также должны использовать dd для сохранения информации о дополнительных секторах (например, загрузочные секторы, если вы планируете полное восстановление) ... или, как вы сказали, используйте fs со встроенной емкостью.

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

-1
27.01.2020, 20:37

Теги

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