2008-12-19 55 views
0

我有一個bash文件,其中包含wget命令以下載總計大約20GB數據的100,000個文件。通過ssh通過wget從bash文件下載超過100,000個文件有多可靠?

bash的文件看起來像:

wget的http://something.com/path/to/file.data

wget的http://something.com/path/to/file2.data

wget的http://something.com/path/to/file3.data

wget的http://something.com/path/to/file4.data

而且恰好有114770行的這一點。如何可靠地SSH入服務器我有一個帳戶,並運行它?我的SSH會話最終會超時嗎?我是否必須在整個時間內參與?如果我的本地計算機崩潰/關閉會怎麼樣?

此外,有沒有人知道這需要多少資源?我瘋了想要在共享服務器上執行此操作嗎?

我知道這是一個奇怪的問題,只是想知道如果有人有任何想法。謝謝!

回答

4

使用

#nohup ./scriptname &> logname.log

這將確保

  • 過程仍將即使SSH會話被中斷
  • 你可以監控它,因爲它在行動

也會建議,你可以定期提示一些提示,對日誌分析很有幫助。例如#echo "1000 files copied"


至於資源利用率而言,它完全取決於系統和majorly網絡特性。理論上,您可以調整帶寬的數據大小爲&的時間。但是在現實生活中,延遲,延遲和數據丟失就出現了。

所以做出一些assuptions,做一些數學,你就會得到答案:)

1

取決於通信介質,硬件的可靠性......!

在從遠程計算機斷開連接時,可以使用screen使其保持運行狀態。

0

nohup ./scriptname & 

啓動它,你應該罰款。 此外,我會建議您記錄進度,以便您能夠找到停止的位置。

wget url >>logfile.log 

可能就足夠了。

監測進展生活你可以:

tail -f logfile.log 
+0

./scriptname&如果ssh會話中斷,將不會繼續。 – 2008-12-19 08:24:51

+0

謝謝,完全忘了。 – 2008-12-19 08:39:01

0

你想從你的shell斷開腳本,並使其在後臺,當你退出運行(使用nohup的),使其繼續運行。

您還需要某種進度指示器,例如記錄下載的每個文件的日誌文件以及所有錯誤消息。 Nohup將stderr和stdout發送到文件中。 有了這樣一個文件,你可以選擇中斷下載和稍後中止運行。

首先給它一個測試運行一小組文件,看看你是否得到了命令和喜歡的輸出。

0

我建議你用nohup將它從你的shell中分離出來。

$ nohup myLongRunningScript.sh > script.stdout 2>script.stderr & 
$ exit 

該腳本將運行完成 - 您無需始終登錄。

檢查是否有任何選項可以讓wget使其在失敗時重試。

0

如果有可能,生成的所有文件的MD5校驗,並用它來檢查,如果他們都被正確傳送。

0

看看替代技術可能是值得的,比如rsync。我在很多項目中使用過它,它的工作非常非常好。