0

合計約 20 GB のデータを含む 100,000 を超えるファイルをダウンロードするための wget コマンドを含む bash ファイルがあります。

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

これにはちょうど 114,770 行あります。アカウントを持っているサーバーにsshしてこれを実行するのはどれくらい信頼できますか? ssh セッションは最終的にタイムアウトになりますか? ずっとsshする必要がありますか?ローカル コンピューターがクラッシュまたはシャットダウンした場合はどうなりますか?

また、これに必要なリソースの数を知っている人はいますか? 共有サーバーでこれをやりたいと思うのはおかしいですか?

これは奇妙な質問だと思いますが、誰かアイデアがあるかどうか疑問に思っています。ありがとう!

4

7 に答える 7

4

使用する

#nohup ./scriptname&> logname.log

これにより、

  • sshセッションが中断されてもプロセスは続行されます
  • それが動作しているので、あなたはそれを監視することができます

また、定期的にプロンプ​​トを表示できることをお勧めします。これは、ログ分析に適しています。例えば#echo "1000 files copied"


リソース使用率に関する限り、それは完全にシステムに依存し、主にネットワークの特性に依存します。理論的には、データサイズと帯域幅だけで時間を計算できます。しかし、実際には、遅延、遅延、およびデータ損失が浮き彫りになります。

だから、いくつかの仮定をして、いくつかの数学をしてください、そしてあなたは答えを得るでしょう:)

于 2008-12-19T08:29:40.173 に答える
1

通信媒体、ハードウェアなどの信頼性に依存します...!

screenリモート コンピューターから切断している間も実行し続けることができます。

于 2008-12-19T08:23:28.093 に答える
0

可能であれば、すべてのファイルに対してMD5チェックサムを生成し、それを使用して、すべてが正しく転送されたかどうかを確認します。

于 2008-12-19T08:30:00.123 に答える
0

から始めましょう

nohup ./scriptname &

そしてあなたは大丈夫なはずです。また、進行状況をログに記録して、停止した場合にどこで停止したかがわかるようにすることをお勧めします。

wget url >>logfile.log

十分かもしれません。

進行状況をライブで監視するには、次のことができます。

tail -f logfile.log
于 2008-12-19T08:23:33.727 に答える
0

スクリプトをシェルから切断し、(nohup を使用して) バックグラウンドで実行して、ログアウトしても実行を継続できるようにします。

また、ダウンロードされたすべてのファイルとすべてのエラー メッセージを記録するログ ファイルなど、ある種の進行状況インジケーターも必要です。Nohup は stderr と stdout をファイルに送信します。このようなファイルを使用すると、壊れたダウンロードや中止された実行を後で拾うことができます。

最初に小さなファイル セットを使用してテストを実行し、コマンドがダウンして出力が気に入ったかどうかを確認します。

于 2008-12-19T08:27:21.597 に答える
0

でシェルから切り離すことをお勧めしますnohup

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

スクリプトは最後まで実行されます。最後までログインする必要はありません。

失敗時に再試行するように wget に指定できるオプションを確認してください。

于 2008-12-19T08:28:41.547 に答える