2012-05-23 136 views
11

我想为我的本地(Mac OS X)机器编写一个简单的bash脚本来移动我的机器上的目录中的文件到远程机器。此行是失败的:bash脚本rsync:rsync:link_stat(blah)失败:没有这样的文件或目录(2)

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,这是在机器的根),它使用了我的工作目录。这是什么造成的?

+2

引用您的变量,请! –

回答

23

检查你的\字符没有空格,然后后,在该行的结束,因为这将导致BASH不正确地解释换行,给rsync的错误上面

+2

你......你刚刚结束了2小时的头发拉动。我爱你。 –

-2

此:

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解释\字符不同于命令行中,或者也许有后的隐式非空白字符。

+0

bash如何在非交互式会话中以不同方式处理它? – jordanm

+0

更适合superuser.com –

+3

我在cmd-line或脚本中使用line-continuation-char(ie'\')时遇到的唯一问题是当除\ n之外还有任何字符时'后面的人物。我没有降低你的答案,但我认为这是不对的。祝你们好运。 – shellter

3

从删除“*”源位置,rsync的知道要查找的目录内,如果你到底

那样指定“/”:

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