LINUX.ORG.RU

Как не накосячить при разворачивании бекапа

 ,


0

2

Делаю бекапы с помощью

rsync -ahR --delete /etc /home/user/Documents /home/user/.config ... путь_к_директории_для_бекапа

В бекапах всякие конфиги из /etc и домашней директории, важные файлы и прочее. Правильно я понимаю, что чтобы развернуть такой бекап нужно сделать rsync -ahR --delete путь_к_директории_для_бекапа /? Вся структура по идее должна развернутся в соответствии с изначальной иерархией и правами. Или я что-то упускаю? И если запущу разворачивание под рутом чтобы дать права работать с /etc не прошляплю ли я права на файлы в домашнем?

Запуская в таких условиях, в которых не страшно накосячить с развёртыванием, например, предварительно забацав полную копию на блочном уровне. // КО

t184256 ★★★★★
()

Если я тебя правильно понял:

1. Создаешь файл backuplist.txt, в котором пишешь пути к директориям. Пример:

path1
path2/and/more

2. Можно использовать rsync с параметром --files-from с исключением одного из путей в этом списке для защиты фильтром:

rsync -aHr --filter "protect path1/**/*" $dry --progress --delete --force --inplace --delete-after --files-from=/backuplist.txt /source /target

Т. е. рекурсивно копировать файлы из /source/path1, /source/path2/ и /more в /target/path1, /target/path2/ и /more. Все, что не существует в исходных путях, но существует в целевых путях, должно быть удалено, ЗА ИСКЛЮЧЕНИЕМ любых файлов в /target/path1 и ниже.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

неправильно. ты несколько источников льешь в целевой каталог.
а обратно значит их надо как-то правильно распихать. но у тебя никаких признаков в цели нету и они неразличимы.

не мудри с велосипедом если не уверен в своих действиях.

rsync -ahR --delete /etc                 /путь/к/директории/для/бекапа/etc    
rsync -ahR --delete /home/user/Documents /путь/к/директории/для/бекапа/home/user/Documents      
rsync -ahR --delete /home/user/.config   /путь/к/директории/для/бекапа/home/user/.config

и т.д. скрипт получится большой, но главное простой и линейнопонятный.
скрипт восстановления сделать по нему непроблема.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 2)
Ответ на: комментарий от pfg

Или я чего-то не понял, или ты. Если юзать rsync с -R, тогда сохраняется полный путь, а не только конечный файл. Типо

cd
rsync -ahR Documents/doc1.odt /tmp/backup/

В итоге я получаю /tmp/backup/home/user/Documents/doc1.odt, а не /tmp/backup/doc1.odt. Иерархия же сохраняется. И по идее если я сделают

rsync -ahR /tmp/backup/ /

То получу doc1.odt в Documents/. И так со всеми файлами в однострочнике.

Nayseel
() автор топика
Ответ на: комментарий от Nayseel

Если юзать rsync с -R, тогда сохраняется полный путь

Не полный, а относительный.

Иерархия же сохраняется

-aHr

Deleted
()

если ты делаешь бэкапы без проработки сценария разворачивания и без тестовых прогонов этого, считай что нет у тебя бэкапов

SevikL ★★★★★
()
Ответ на: комментарий от Deleted

Открой ман по rsync. -r уже есть в -a. И зачем советовать вставлять сохранение хардлинков, если у тебя нет инфы по ним от ТСа? Лишь бы написать абы что?

anonymous
()
Ответ на: комментарий от anonymous

-R, --relative — относительные пути.

-r, --recursive — рекурсивное вхождение в каталоги.

Зависит от того, какой именно результат нужен ТС. Если только то, что указано в ОП, тогда этого действительно может хватить.

Deleted
()
Ответ на: комментарий от Nayseel

про -R тебе уже пояснили, хотя я действительно не всматривался в опции.

не делай
rsync -ahR /tmp/backup/ /
сделай обратный моему скрипт построчно где каждая строчка копирует каждый элемент бекапа.
будет длинно но просто и доступно каждому, как к примеру тебе еще не сильно разбирающемуся в сложносплетениях однострочников.

я давно уже ушел от рсинка к тар.хз (хотя тоже обрубок :( ) и сейчас подумываю перейти на бекапы в squashfs

pfg ★★★★★
()

чтобы развернуть такой бекап нужно сделать rsync -ahR --delete путь_к_директории_для_бекапа /?

Нет, в этом случае у вас будет попытка создания «путь_к_директории_для_бекапа» относительно корня, т.е. либо копия backup-а самого в себя (при указании полного пути к нему), либо в каталог «/путь_к_директории_для_бекапа», если путь указан не абсолютный. Сравните эту команду с той, которой делается backup - их логика одна и та же.

Разворачивать нужно либо по отдельным каталогам:

rsync -av --inplace --delete /путь/к/директории/для/бекапа/etc/                 /etc/
rsync -av --inplace --delete /путь/к/директории/для/бекапа/home/user/Documents/ /home/user/Documents/
rsync -av --inplace --delete /путь/к/директории/для/бекапа/home/user/.config/   /home/user/.config/
либо запускать без параметра --delete (иначе весь корень приведётся к виду каталога с backup-ом):
rsync -av --inplace /путь/к/директории/для/бекапа/  /

Вообще при пользовании rsync ОЧЕНЬ полезно первый раз запускать его с параметром --dry-run - он покажет что будет делать с какими файлами, но реальных изменений произведено не будет.

spirit ★★★★★
()

rsync может накосячить с правами файлов. Он вроде не обязан, но у меня было. Может починили, может я по неправильному мануалу говорил ему «все атрибуты копировать точно»

А ещё с помощью rsync элементрано накосячить с созданием бэкапа. Ведь создаётся только 1 самая последняя версия, и если не заметить косяка и синхронизировать его в бэкап…

kirill_rrr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.