2011-03-09 48 views
0

我寫了一個bash腳本來更新我公司網站上的一個頁面。這是我到目前爲止:bash + ftp:上傳文件爲空

#!/bin/bash 

ruby final_07.rb 

HOST=ftp.website.com 
USER=username 
PASSWD=password 

ftp -n -v $HOST <<EOF 
user $USER $PASSWD 
delete warehouse.html.old 
rename warehouse.html warehouse.html.old 
put warehouse.html warehouse.html 

EOF 

它運行Ruby腳本就好了。它連接到FTP就好了。它甚至可以很好地重命名舊文件。然而,當它「上傳」時,我只是得到一個名爲'warehouse.html'的文件,它是0字節 - 它完全是空的。我檢查了,源文件很好。當我用FileZilla手動上傳時,它也可以正常工作。那麼,是什麼給了?

下面是從我的終端窗口的日誌:

[email protected]:~/code/ruby/idealm_db_parser/final$ ./update_script_02.sh 
Connected to www.website.com. 
220 FTP Service 
Remote system type is UNIX. 
Using binary mode to transfer files. 
331 Password required for user. 
230 User user logged in. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
250 DELE command successful 
350 File or directory exists, ready for destination name. 
250 Rename successful 
local: warehouse.html remote: warehouse.html 
200 PORT command successful 
150 Opening BINARY mode data connection for warehouse.html 
226 Transfer complete. 
221 

預先感謝任何幫助。如果有幫助,我正在運行Ubuntu 10.10。

+1

.old文件看起來是否正確?你能查看遠程機器上的文件權限和目錄權限嗎?確保他們沒問題。 (零文件*是*怪異的;-)! – shellter 2011-03-09 20:16:28

+0

權限。你可能會做些什麼。對於* nix如何處理權限,我還很不熟悉,所以我不會感到驚訝。我會在一個小時左右工作 - 我會測試它並讓你知道。 – eckza 2011-03-10 12:43:12

+1

並且發送和接收機器都是Ubuntu。不同的操作系統將有不同的Ftp客戶端,有時候根本不同的選項和處理。 – shellter 2011-03-10 14:43:35

回答

0

我覺得我得到它排序前。我刪除了行:

delete warehouse.html.old 
rename warehouse.html warehouse.html.old 

這似乎是伎倆。出於某種原因,顯然腳本已將我的計算機上的warehouse.html文件清零,然後將其上傳。

感謝所有幫助過我的人。

+1

所以你不在乎現有的html.old會發生什麼,或者你不會保留備份副本? (也許這是好的,但然後...) – shellter 2011-03-10 16:06:58

+0

它應該沒問題。 HTML是使用從我們的數據庫導出的文件編寫的腳本動態生成的,並且我保留了導出副本 - 所以如果出現問題,從數據庫導出重新生成HTML會更有意義。 – eckza 2011-03-10 16:40:02

+1

很高興聽到它被排序。您可以通過點擊此答案上的向上/向下箭頭旁邊的空白複選標記來接受您自己的答案。 – 2011-03-10 21:36:21

0

你可以嘗試

  • 切換到ASCI模式你把你的文件
  • 使用被動FTP模式轉化中的文件