30

我正在尝试为我的本地(Mac OS X)机器编写一个简单的 bash 脚本,以将文件从我机器上的目录移动到远程机器。这条线失败了:

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,它使用的是我的工作目录,而不是使用定义的目录(位于机器的根目录中)。这是什么原因造成的?

4

4 回答 4

49

检查您的\字符在行尾是否没有空格。这将导致 BASH 无法正确解释换行,从而出现上述 rsync 错误。

于 2013-08-06T08:57:03.353 回答
9

从源位置删除'*',如果你在最后指定'/',rsync 知道在目录内部查找

像那样:

rsync --verbose  --progress --stats --compress --rsh=ssh --recursive --times --perms --links --delete --exclude "*bak" --exclude "*~" /repository/ $DEV_SERVER:$REMOTE_DIR
于 2016-02-17T09:38:46.400 回答
1

我在做一些 rsync 工作时遇到了同样的错误。我有错误的字符来指定我必须从其他地方复制和粘贴命令得到的选项:

而不是下面的正确字符:

-
于 2021-01-17T13:19:43.753 回答
-1

这:

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 对\字符的解释与命令行不同,或者后面可能有一个隐含的非空白字符。

于 2012-05-23T19:51:08.797 回答