2017-01-05 26 views
-1

Я пытаюсь выполнить скрипт rsync для быстрой копирования файлов в один каталог на OSx. У меня проблема с параметрами include и exclude. Например, каталог, я хотел бы, чтобы скопировать это:Rsync включить, исключить и фильтровать

$HOME/Library/Dir1/RandomDir/cache/ 

Я был первоначально используя Rsync просто синхронизировать каталог кэша, однако OSx был не использовать подстановочные знаки в исходном пути. Командой я использовал была:

rsync -avP "$HOME/Library/Dir1/*/cache/" Dest/Dir 

Когда я запустить эту команду OSx не смог найти директорию, потому что искали буквальное взаимопроникновение Dir1/*/и * не обрабатывались в качестве шаблона ,

Затем я попытался реализовать опции --include и --exclude, однако мне не удалось заставить это работать.

Я использовал

rsync -avP --include="*/" --include="cache/" --exclude"*" $HOME/Library/Dir1/ Dest/Dir/ 

Когда я запускаю эту команду он не копирует только каталог кэша. Я понимаю, что rsync реализует include и исключает в том порядке, в котором они введены, поэтому моя логика заключается в том, что rsync будет включать все в каталог Dir1 (заботясь о проблеме с подстановочными знаками), а затем включать только каталог кеша, затем он будет исключать все остальное. Я хочу использовать rsync для своих возможностей архивирования хранения атрибутов файлов и временных меток по всей копии.

Может ли кто-нибудь сказать мне, где я ошибаюсь? Я пробовал несколько вариантов команды, например, --include = "/cache" и --exclude = "/*", но, очевидно, пока ничего не удалось. Любая помощь вообще очень ценится. Спасибо.

+0

Выполняется ли rsync из сценария, сценария автозапуска или с консоли? Консоль должна правильно расширять '$ HOME/Library/Dir1/*/cache /', но Automator может не работать, например. – Janek

+0

Спасибо. Я не думаю, что использую Automator, но я не очень-то знаком с этим. Я создал сценарий bash и дал файлу расширение .command. Когда вы нажимаете на это в OSx, он открывает окно терминала и запускает команду. Будет ли это использовать Automator? – user7376266

ответ

0

Наконец-то я нашел, где была моя проблема. У меня был исходный каталог в двойных кавычках, таким образом интерпретировав * как литерал ... Спасибо в любом случае.