rsync: как копировать полную структуру каталогов - PullRequest
0 голосов
/ 12 апреля 2019

Я хотел бы использовать rsync для синхронизации некоторых каталогов с удаленного сервера на моем локальном компьютере. Чтобы файлы были организованы, я бы хотел, чтобы rsync создал / скопировал весь путь со всеми родительскими каталогами.

Я использую ssh с файлами сертификатов, поэтому не требуется вход в систему вручную.

Если я использую его следующим образом, он копирует файл file.crt, но не создает родительские каталоги:

rsync -ave ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/

Если я пытаюсь использовать опцию -R --recursive, она завершается с ошибкой ниже:

 rsync -ave --recurisive ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/

или с -R

 rsync -aveR ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/

Неожиданный удаленный аргумент: user1@10.10.10.10: /opt/dir/data/file.crt

Ошибка rsync: синтаксис или ошибка использования (код 1) в main.c (1361) [sender = 3.1.2]

Спасибо за любую помощь заранее

1 Ответ

0 голосов
/ 12 апреля 2019

Я вижу здесь две проблемы: во-первых, параметры -R и --recurisive равны , а не одинаковы (и "рекурсивный" написан с ошибкой). -R - это краткая форма --relative, которая вам нужна (включает полный путь к источнику). Существует опция --recursive (краткая форма: -r), но она подразумевается -a, и здесь также не имеет значения, потому что вы копируете один файл, а не каталог.

Во-вторых, когда вы добавляете новый параметр, вы помещаете его между -ave и ssh, но ssh присутствует в качестве параметра для параметра -e, поэтому он должен следовать сразу после -e. То, как вы это пишете, rsync интерпретирует -R или что-то еще как параметр для -e, а ssh как совершенно отдельный аргумент, и поэтому становится полностью запутанным.

Но вам все равно не нужно -e ssh - это почти всегда значение по умолчанию, поэтому вы можете просто его отключить. Поэтому попробуйте это:

rsync -avR user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/

Если это не сработает, попробуйте вместо этого:

rsync -avR -e ssh user1@10.10.10.10:/opt/dir/data/file.crt /home/user1/
...