Я искал в сети способ сделать полную резервную копию моей машины 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