Bash scripting rsync: rsync: link_stat (blah) не удалось: нет такого файла или каталога (2)

Я пытаюсь написать простой bash script для моей локальной (Mac OS X) машины для перемещения файлов из каталога на моем компьютере на удаленную машину. Эта строка не работает:

rsync --verbose  --progress --stats --compress --rsh=ssh \
      --recursive --times --perms --links --delete \
      --exclude "*bak" --exclude "*~" \
      /repository/* $DEV_SERVER:$REMOTE_DIR

$DEV_SERVER и $REMOTE_DIR определены ранее, и я повторяю их, чтобы убедиться, что они точны.

Ошибка, которую я получаю:

rsync: link_stat /Users/myusername/mycurrentdirectory failed: No such file or directory (2)

Следует отметить, что вместо использования определенного каталога (/repository, который находится в корневой части машины), он использует мой рабочий каталог. Что вызывает это?

Ответ 1

Убедитесь, что ваши\символы не имеют пробелов после этого в конце строки, потому что это приведет к тому, что BASH не будет правильно интерпретировать перенос строки, указав ошибку rsync выше

Ответ 2

Удалите '*' из исходного местоположения, rsync знает, что нужно посмотреть внутри каталога, если вы укажете '/' в конце

вот так:

rsync --verbose  --progress --stats --compress --rsh=ssh --recursive --times --perms --links --delete --exclude "*bak" --exclude "*~" /repository/ $DEV_SERVER:$REMOTE_DIR

Ответ 3

Это:

rsync --verbose  --progress --stats --compress --rsh=ssh \
  --recursive --times --perms --links --delete \
  --exclude "*bak" --exclude "*~" \
  /repository/* $DEV_SERVER:$REMOTE_DIR

должно быть следующим:

rsync --verbose  --progress --stats --compress --rsh=ssh --recursive --times --perms --links --delete --exclude "*bak" --exclude "*~" /repository/* $DEV_SERVER:$REMOTE_DIR

Bash интерпретирует символ \ иначе, чем в командной строке, или, возможно, после него появляется неявный символ без пробелов.