Я пытаюсь создать сценарий, который создает как резервную копию снимка, так и дифференциальную резервную копию, но с жесткими ссылками вместо дублированных файлов. Другими словами:
- Все неизмененные файлы между текущей резервной копией снимка и предыдущим снимком жестко связаны, а не дублируются;
 - Все файлы в дифференциальной резервной копии являются жесткими ссылками на файлы текущего снимка.
 
Позвольте мне попытаться уточнить. Быть:
$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?
