Создание разностной резервной копии с жесткой связью (попытка с помощью rsync)

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

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


позвольте мне попытаться прояснить. Be:

  • $SRC: исходное дерево, исходные файлы для резервного копирования
  • $PREV: предыдущая резервная копия снимка
  • $SNAPSHOT: текущий снимок резервной копии
  • $DIFF: дифференциальное резервное копирование (только измененные файлы)
  • $RF: rsync флаги, как-aPhvv


я могу создать жестко связанный снимок со следующей командой:

rsync $RF --link-dest=$PREV $SRC $SNAPSHOT

это прекрасно работает.


теперь я хочу создать другое дерево,$DIFF, только с различиями между $SNAPSHOT и $PREV.

я могу сделать именно это с помощью следующей команды:

rsync $RF --compare-dest=$PREV $SNAPSHOT $DIFF

это также работает отлично и очень близко к тому, что я хочу достичь. Единственная проблема заключается в том, что все файлы, которые $PREV и $SNAPSHOT теперь дублируются на $DIFF, Я хотел бы, чтобы они были жесткие ссылки на $SNAPTSHOT вместо обычных копий.


С точки зрения rsync, я хочу сделать следующее: после создания снимка он становится моим новым деревом источников,$SNAPSHOT. Пункт назначения $DIFF. База сравнения с источником $PREV, поэтому довод --compare-dest=$PREV должен позаботиться об этом. Это, как и предыдущая команда, будет копировать только файлы изменено между предыдущим и текущим снимком. Теперь, чтобы скопировать файлы, я хочу, чтобы они сначала сравнивались с файлами в $SNAPSHOT, а затем, если они существуют, связывались с ними вместо копирования. Это --link-dest=$SNAPSHOT делает, и это тоже работает. Оба варианта хорошо работают индивидуально,compare-dest создает дифференциальную копию и link-dest создает связанное дерево, но я хочу смешать оба, как описано выше, который rsync не позволять.

если rsync разрешено, это то, что я хотел сделать:

# Create the snapshot backup:
myhost:~$ rsync $RF --link-dest=$PREV $SRC $SNAPSHOT
     // successful. output suppressed...

# Try to create the hard linked differential backup:
myhost:~$ rsync $RF --compare-dest=$PREV --link-dest=$SNAPSHOT $SNAPSHOT $DIFF
rsync: You may not mix --compare-dest, --copy-dest, and --link-dest.
rsync error: syntax or usage error (code 1) at main.c(1567) [client=3.1.2]


любые идеи о том, как создать $DIFF дерево в стороне, что файлы на этом дереве все жесткие ссылки на $SNAPSHOT ? Или другие предложения о том, как достичь моих целей с другими командами linux?

21
задан Fabiano
08.01.2023 12:34 Количество просмотров материала 3360
Распечатать страницу

1 ответ

вы можете сделать это путем создания $DIFF и $SNAPSHOT в обратном порядке. Первый запуск

rsync $RF --compare-dest=$PREV $SRC $DIFF

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

cp -al $PREV $SNAPSHOT

наконец, hardlink скопировать изменения на там:

cp -al $DIFF $SNAPSHOT

Примечание: я на самом деле не тестировал это, так что не могу гарантировать, что он работает.

0
отвечен Jaap Eldering 2023-01-09 20:22

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

backup
command-line
linux
rsync
shell-script
Вверх