Вопрос или проблема
Я новичок в rsync и нуждаюсь в помощи с синтаксисом или общим пониманием.
У меня есть 3 сервера:
-
Источник (
SRC
) -
Назначение (
DST
) -
Сервер, на котором установлены rsync и ssh.
Я использую rsync из Cygwin
Примечание: SRC
и DST
не имеют установленного rsync. Все 3 сервера работают на Windows 2012 R2.
Моя цель: Мне нужно скопировать/синхронизировать папку X
, расположенную на SRC
, например C:\Program Files\X
, на DST
в том же расположении.
Я выполняю эту команду:
rsync -a \\SRC_server\Program Files\X \\DST_server\Program Files\X
Я получил ошибку, что не удалось распознать путь.
Примечание: Сервер, на котором установлен rsync, мог видеть и записывать на SRC
и DST
, то есть я мог получить доступ и записывать на удаленные серверы.
Мои вопросы:
- Мне нужно установить rsync и ssh на
SRC
иDST
тоже? - Что не так с синтаксисом моей команды?
Я хочу простую опцию для копирования/синхронизации, а позже оптимизирую ее. Сейчас я даже не могу скопировать файлы с SRC
на DST
, поэтому хотел бы увидеть, может кто-то помочь мне решить эту проблему.
Спасибо за поддержку, но наша команда решила воздержаться от использования rsync.
Мы все еще рассматриваем 2 варианта:
- Резервное копирование/восстановление с помощью WSB.
- Все еще поиграть с tar или даже zip-утилитой, но изменить рабочий процесс.
Я думаю, что в моем случае виновата задержка сети. Поэтому я собираюсь следовать шагам tar/copy/untar, но вместо выполнения этого удаленно я буду делать tar локально. Надеюсь, это может изменить ситуацию.
Таким образом, данный тикет по rsync можно закрыть как несущественный.
Ответ или решение
Конечно! Давайте разберем ваши вопросы по использованию rsync
на Windows, и я постараюсь помочь вам максимально эффективно.
Ответ на ваши вопросы
-
Должен ли я установить
rsync
иssh
на SRC и DST?
Если вы хотите использоватьrsync
как мощный инструмент для синхронизации данных, то установкаrsync
иssh
наSRC
иDST
будет очень полезной. Это позволит вам более эффективно выполнять синхронизацию, особенно при большом объеме данных или частых изменениях. Однако, если вы хотите просто скопировать файлы, вы можете выполнить задачу, не устанавливаяrsync
на оба сервера, используя команду с вашего сервера (где установленrsync
), но с некоторыми ограничениями. -
Что не так с синтаксисом моей команды?
Ваш синтаксис команды имеет несколько нюансов. Во-первых, Windows использует обратные слэши\
для обозначения путей, и они могут конфликтовать сrsync
. Также вы можете использовать URL-форматsmb
для доступа к сетевым ресурсам. Вам следует попробовать следующую команду:rsync -a --progress --delete "C:/Program Files/X/" "user@DST_server:/cygdrive/c/Program Files/X/"
В этой команде:
- Используются одинарные/двойные кавычки для путей, чтобы избежать проблем с пробелами.
user@DST_server
— заменитеuser
на имя пользователя на сервере назначения.- Убедитесь, что у вас есть доступ по SSH к серверу назначения.
Если вы используете общие папки Windows, укажите путь как:
rsync -a --progress --delete "//SRC_server/Program Files/X/" "//DST_server/Program Files/X/"
Здесь также помните, что нужно использовать двойные слэши для обозначения сетевого пути.
Рекомендации по оптимизации и другим инструментам
Если вы столкнулись с проблемами из-за сетевой задержки, возможно, использование таких инструментов, как tar
или zip
, будет более подходящим в вашем случае. Вы можете создать архив с файлами на одном сервере, затем передать его на другой и разархивировать:
-
Создайте архив на
SRC
:tar -cvf archive.tar "C:/Program Files/X"
-
Перенесите архив на
DST
, используя SCP или другой метод. -
Разархивируйте на
DST
:tar -xvf archive.tar -C "C:/Program Files/"
Заключение
Я понимаю, что ваша команда решила не использовать rsync
, однако предложенные мной идеи могут помочь вам в будущем! Вы всегда можете обратиться к более простым методам, при этом оптимизируя их по мере необходимости. Если будут вопросы или нужна дополнительная помощь, не стесняйтесь задавать их!