Назад | Перейти на главную страницу

Почему не работает rsync over ssh при помещении в цикл FOR в пакетном файле?

Я разместил файл ff. код в rsync.bat:

for %%A in (%VAR_REMOTE_HOST%) do (
  set VAR_TARGET=%USER%@%%A:%VAR_TARGET_DIR%

  echo Rsync Source Dir: %VAR_SOURCE%
  setlocal ENABLEDELAYEDEXPANSION
  echo Rsync Target Dir: !VAR_TARGET!
  endlocal

  echo Syncing files...

  rsync -rltgDvzO --chmod=Dugo=rwX,Fugo=rw -e ssh %VAR_SOURCE% %VAR_TARGET%
)

где VAR_REMOTE_HOST - это список серверов, разделенных запятыми.

Он выводит в rsync список файлов с разрешениями, размерами и отметками времени. Он даже отображает журнал rsync в конце (отправленные байты, полученные байты, байты / сек). Однако файлы не отправляются на цель. Как будто он прошел пробный пуск. (но без опции -n)

Смотрите скриншот здесь. (http://postimg.org/image/vc0kei1j1/)

кто-нибудь еще сталкивался с этим?

Как будто он прошел пробный пуск. (но без опции -n)

Взгляните еще раз на свою строку rsync:

rsync -nrltgDvzO 

Я ясно вижу -n вариант есть ...

Я нашел виноватого! % VAR_TARGET% изменен на! VAR_TARGET! и переместил endlocal в конец цикла.

Новый код:

for %%A in (%VAR_REMOTE_HOST%) do (
  set VAR_TARGET=%USER%@%%A:%VAR_TARGET_DIR%

  echo Rsync Source Dir: %VAR_SOURCE%
  setlocal ENABLEDELAYEDEXPANSION
  echo Rsync Target Dir: !VAR_TARGET!

  echo Syncing files...

  rsync -rltgDvzO --chmod=Dugo=rwX,Fugo=rw -e ssh %VAR_SOURCE% !VAR_TARGET!
  endlocal
)