Bash脚本rsync:rsync:link_stat(blah)失败:没有这样的文件或目录(2)

时间:2012-05-23 19:02:47

标签: bash scripting rsync

我正在尝试为本地(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 个答案:

答案 0 :(得分:37)

检查你的\字符在行尾之后没有空格,因为这会导致BASH无法正确解释换行符,从而导致rsync错误

答案 1 :(得分:5)

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

像那样:

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

答案 2 :(得分:0)

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

而不是下面的正确字符:

-

答案 3 :(得分:-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以不同于命令行的方式解释\字符,或者在它之后可能存在隐含的非空白字符。