наиболее эффективный и безопасный способ сделать полное дифференциальное резервное копирование с помощью rsync

наиболее эффективный и безопасный способ сделать полное дифференциальное резервное копирование с помощью rsync

Я искал в сети способ сделать полную резервную копию моей машины Linux (не сервера) и восстановить все в любое время.

Я начал с самого популярного руководства в каждой теме,http://www.mikerubel.org/computers/rsync_snapshots/index.htmlи я думал, что этот тип резервного копирования является инкрементным резервным копированием, после еще одного дня исследований я обнаружил, В чем разница между дифференциальным и инкрементным резервным копированием с точки зрения команды rsync?и другие обсуждения, но я не уверен, что я на самом деле делаю.

Следуя руководству и постам, я решил попробовать с одной папкой (перед резервным копированием всей системы) под названием source

rsync -av --delete /home/user/source /home/user/backup/backup0/

затем я добавил и удалил некоторые файлы и сделал резервную копию еще три раза

rsync -avH --delete --link-dest=/home/user/backup/backup0 /home/user/source /home/user/backup/backup1 

rsync -avH --delete --link-dest=/home/user/backup/backup1 /home/user/source /home/user/backup/backup2

rsync -avH --delete --link-dest=/home/user/backup/backup2 /home/user/source /home/user/backup/backup3

Я думал, что с таким типом резервного копирования у меня будет что-то вроде:

backup0-->backup1-->backup2-->backup3

Итак, если бы я хотел восстановить содержимое "backup3", то нужны были #1 и #2, но я удалил их, а затем восстановил backup3, и все вернулось на место. Поэтому я запустил

user@user:/backup$ du -sh *
450M    backup0
620K    backup1
624K    backup2
628K    backup3

Похоже на дифференциальное резервное копирование, а не инкрементальное, но я думал, что для дифференциального резервного копирования мне придется устанавливать это для каждого резервного копирования. --link-dest=/home/user/backup/backup0

У меня вопрос: Я что-то путаю? Есть ли лучший способ сделать резервную копию всей системы с помощью rsync?

PS: целевым устройством будет внешний диск с той же файловой системой.

решение1

С помощью жестких ссылок можно хранить несколько копий файла, и он будет занимать дисковое пространство только одной копии. То, что вы видите, это duосторожность, чтобы не дважды учитывать пространство, занимаемое несколькими жесткими ссылками на один и тот же файл.

Если бы вы бежали:

du -sh backup3

вы обнаружите, что backup3 занимает 450M или около того. Если вы запустите:

du -sh backup2 backup3

вы обнаружите, что backup2 занимает около 450M, а backup3 занимает совсем немного. Это потому, что duсначала просматривается backup2 и подсчитывается его пространство. Когда он просматривает backup3, он подсчитывает только новое используемое дисковое пространство, а не жесткие ссылки на файлы, которые уже были подсчитаны в backup2.

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

Пример

Я поместил файл размером 1,2 МБ в каталог src/. Давайте создадим две резервные копии:

$ rsync -a src backup1
$ rsync -a --link-dest=../backup1 src backup2

Давайте посмотрим, насколько велик backup2:

$ du -sh backup2
1.2M    backup2

backup2 имеет 1,2 мегабайта. Теперь посмотрим, насколько велики backup1 и backup2:

$ du -sh backup1 backup2
1.2M    backup1
8.0K    backup2

Теперь backup2 будет выглядеть всего лишь 8k. Это потому, что жесткие ссылки не учитываются дважды.

решение2

Жесткие ссылки — лучший способ сэкономить дисковое пространство. Вместо скриптов с rsync я использую обертку, которая делает эту работу:Резервное копирование бабочки.

Эта оболочка использует чистый rsync и превращает rsync в настоящий инструмент резервного копирования/восстановления (он также имеет режимы архивации/экспорта).

Также в его настройках есть флаг --mode/-m, который позволяет выбирать режим резервного копирования междуИнкрементныйилиДифференциал.

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

Пример:

$ bb backup --computer mypc --destination /backup --data User --type Unix
 --mode Differential

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