
Я хочу синхронизировать два каталога так, чтобы локальная версия могла содержать толькоподмножествоудаленной версии. Таким образом, их синхронизация должна привести к тому, что любые изменения в локальном подмножестве будут отправлены в удаленный каталог, а любые изменения в удаленном каталоге, внесенные в соответствующее подмножество, будут втянуты в локальный каталог. Однако я не хочу, чтобы какие-либо новые файлы или каталоги были извлечены из удаленного каталога без их явного копирования.
(Причина, по которой я хочу это сделать, заключается в том, что у меня очень большая музыкальная коллекция на удаленном сервере, но я не могу поместить всю коллекцию на свой ноутбук сразу из-за нехватки места на диске. Однако я хотел бы сохранить ту часть коллекции, которая у меня есть локально, синхронизированной с соответствующей частью на сервере, особенно в случаях, когда я обновил теги ID3, комментарии Vorbis и т. д.)
Флаг rsync, --ignore-non-existing
судя по его документации на странице man, показался разумным способом сделать это, но он не дал ожидаемых результатов. Он пропускает первый уровень подкаталогов, хотя оба корневых каталога содержат одних и тех же потомков.
Например, если удаленный каталог example.org:/path/to/it/
содержит dir1
и dir2
, а локальный каталог /other/dir/
содержит dir1
и dir2
, я получаю следующие результаты...
$ rsync --dry-run --ignore-non-existing example.org:/path/to/it/ /other/dir/
skipping directory .
Или попробуйте с подстановочным знаком...
$ rsync --dry-run --ignore-non-existing example.org:/path/to/it/* /other/dir/
skipping directory dir1
skipping directory dir2
Кто-нибудь знает, как правильно использовать этот флаг? Или я неправильно понимаю его назначение? Или, если у вас есть другие предложения по синхронизации подмножества каталога, пожалуйста, дайте мне знать.
Спасибо. :)
решение1
Попробуйте сделать это рекурсивно:
rsync --recursive --dry-run --ignore-non-existing example.org:/path/to/it/ /other/dir/