Как работает rsync –compare-dest

Я знаю, что здесь есть очень похожий вопрос, но принятый ответ не имеет ничего общего с rsync, и решение OP не применимо в моем случае.

Я пытаюсь получить все обновления из репозитория CentOS, которые отличаются от моего локального репо, сравнивая их с резервной копией репо на диске:

rsync -avh --dry-run --compare-dest=/run/media/user/centos6/updates/x86_64/Packages /home/REPOS/6/updates/x86_64/Packages/ updates 

Тем не менее, на сухом пробеге показано, что все пакеты будут переданы, а не только новые.

Выполнение другого сухого хода, как если бы я копировал из репо на диск, переносит только новые пакеты:

 rsync -avh --dry-run /home/REPOS/6/updates/x86_64/Packages/ /run/media/djones/centos6/updates/x86_64/Packages 

Таким образом, rsync явно способен дифференцировать новые файлы, но по какой-то причине опция compare-dest все еще не работает.

Быстрое и грязное решение состояло в том, чтобы просто сбросить список файлов, используя вторую команду, а затем передать это rsync. Но я бы очень хотел сделать это «правильным» способом.

У меня была такая же проблема, вы должны сделать:

 rsync -avh --dry-run \ --compare-dest=/run/media/user/centos6/updates/x86_64/ \ /home/REPOS/6/updates/x86_64/Packages \ /path/to/updates 

Примечание --compare-dest является родительским элементом Packages и не помещает / в конец исходной папки!

вам нужно что-то вроде этого: rsync --compare-dest=$local_repo/ $centos_repo/ $differences/ (определить папки для переменных или изменить переменные на ваши пути, пути должны быть завершены /). $differences может быть изменена на текущие данные или что-то вроде того.

Он копирует различия внутри папок, которые были между centos_repo и local_repo (centos_repo – источник) в папку различий. Он создает дерево целых деревьев, но вставляет только измененные файлы в отличия.


Если кто-то использует его для резервного копирования, он должен помнить, что файл, который был удален в источнике (centos_repo) и существует в сравнении (local_repo), не копируется на различия