У меня есть система резервного копирования BTRFS, где я делаю ежедневные моментальные снимки (btrfs subvolume snapshot
) и сериализую их в файлы инкрементных изменений на основе резервной копии предыдущих дней (btrfs send -f backup.date volume -p backup.date-1
).
К сожалению, это означает, что я должен хранить каждый сериализованный том навсегда, потому что мне нужен каждый сериализованный снимок в цепочке.
Я попытался десериализовать (btrfs receive
) эти инкрементные снимки и удалить промежуточные тома, но последующим томам назначаются новые идентификаторы. Добавочные тома ссылаются на свои родительские тома по идентификатору, поэтому это разрывает цепочку.
Таким образом, у меня есть backup.Jun01.daily
и backup.Jun01.monthly
, где последний обрезается и имеет другой идентификатор. Эти два файла фактически содержат все те же данные.
Есть ли способ изменить идентификатор на backup.Jun01.monthly
, чтобы backup.Jun02.daily
мог ссылаться на него, тогда как он ссылался на backup.Jun01.daily
?
Я взял несколько другое и возможно несовместимый подход к Вашему. Вместо того, чтобы сохранять btrfs send
поток с -f
, я всегда btrfs receive
для репродуцирования снимка на резервных носителях (также btrfs файловая система).
Кроме того, все снимки неразличимы друг от друга - нет никакого различия между ежемесячными журналами, ежедневными газетами, hourlies и т.д. - их просто называют согласно изодате формы YYYY-MM-DDTHHMMSS+hhmm. Сокращение снимков на исходном узле и сокращение снимков на резервных носителях отдельно до сих пор не вызвали меня проблемы с incrementals, но это - все еще первые годы.
, Что началось, поскольку суть GitHub превратилась во что-то большее, таким образом, я назвал это, snazzer - видят https://github.com/csirac2/snazzer
, я записал то, что я надеялся, был в общем полезный сценарий сокращения, или скорее сценарий, который испускает пути снимков, которые должны быть кандидатами на сокращение. См. https://, github.com/csirac2/snazzer/blob/master/doc/snazzer-prune-candidates.md - видит резюме с этим примером:
find /some/.snapshotz -maxdepth 1 -mindepth 1 -type d | \
snazzer-prune-candidates | xargs btrfs subvolume delete
Печально это не будет работать на Вас, потому что это полагается на наличие имен снимка даты ISO. Если Вы получаете шанс взглянуть на snazzer
, snazzer-receive
или какие-либо другие биты, дайте мне обратную связь - я не совсем готов выпустить к миру (я только что добавил способность сегодня для получения снимков из локальной файловой системы, а не ssh), но любая обратная связь вообще будет приветствоваться.
P.S., Если Вы первоначально отражены в факте, я выбрал оболочку POSIX и жемчуг для этой первой версии, это - потому что я нахожусь в ярости нулевых зависимостей - я буду добавлять реализации Python в ближайшие месяцы :D
очень простое решение было бы
cd /whever/.shapshots btrfs subvolume delete *