Назад | Перейти на главную страницу

Чередование резервных копий с помощью RSync и CP - исключает некорректную работу

Мой сценарий выглядит примерно так:

cp -al $yesterdays_snapshot $todays_snapshot
rsync -vadlH --exclude-from excludes.rsyc $source $todays_snapshot

Это отлично работает, за исключением одной проблемы:

Если вчера у меня не было исключений, но сегодня я понимаю, что / directory / cache следует исключить, rsync перестает просматривать кеш, но cp продолжает копировать его вперед каждый день. Через некоторое время это означает, что снимки будут иметь содержимое / directory / cache годичной давности, что нежелательно. Нам вообще не нужен / directory / cache в снимке.

Было бы лучше, если бы rsync удалил / directory / cache из новейшего снимка.

В качестве альтернативы было бы хорошо, если бы cp знал, что не следует копировать файлы, перечисленные в excludes.rsync.

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

Какие-либо предложения?

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

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

Эта функциональность предоставляется --link-dest вариант.

В основном ваша команда rsync будет выглядеть так rsync -va sourcepath newsnapshotpath --link-dest previoussnapshot. Rsync жестко свяжет любые идентичные файлы с предыдущим снимком и при необходимости скопирует новые файлы. Файлы, которых больше нет в источнике, не будут связаны / скопированы.

В моем ответе на еще вопрос я показал серию команд вы могли бы посмотреть, как именно все это работает.

Для справки: если вы не хотите заново изобретать колесо, вам стоит обратить внимание на dirvish. Это резервная копия, специально разработанная для использования --link-dest характерная черта.