2012-05-23 133 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 
相關問題