#rsync
#rsync
Вопрос:
Я хотел бы использовать 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) [отправитель = 3.1.2]
Заранее спасибо за любую помощь
Ответ №1:
Я вижу здесь две проблемы: во-первых, параметры -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/