насколько надежно было бы загрузить более 100 000 файлов через wget из файла bash через ssh?

У меня есть файл bash, который содержит команды wget для загрузки более 100 000 файлов на общую сумму около 20 ГБ данных.

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'ed в течение всего времени? Что делать, если мой локальный компьютер вышел из строя/выключился?

Кроме того, кто-нибудь знает, сколько ресурсов это займет? Я сумасшедший, чтобы хотеть сделать это на общем сервере?

Я знаю, что это странный вопрос, просто интересно, есть ли у кого-нибудь идеи. Спасибо!


person markwatson    schedule 19.12.2008    source источник


Ответы (7)


Использовать

#nohup ./имя_сценария &>имя_журнала.log

Это обеспечит

  • Процесс продолжится, даже если сеанс ssh будет прерван.
  • Вы можете следить за ним, как он в действии

Также порекомендую, что вы можете получать подсказки через равные промежутки времени, это будет полезно для анализа журнала. например #echo "1000 files copied"


Что касается использования ресурсов, то оно полностью зависит от системы и в основном от характеристик сети. Теоретически вы можете вычислить время, используя только размер данных и пропускную способность. Но в реальной жизни появляются задержки, задержки и потери данных.

Так что сделайте некоторые предположения, сделайте немного математики, и вы получите ответ :)

person M.N    schedule 19.12.2008

Зависит от надежности среды связи, оборудования, ...!

Вы можете использовать screen, чтобы он продолжал работать, пока вы отключаетесь от удаленного компьютера.

person mmx    schedule 19.12.2008

Вы хотите отключить сценарий от вашей оболочки и запустить его в фоновом режиме (используя nohup), чтобы он продолжал работать после выхода из системы.

Вы также хотите иметь какой-то индикатор прогресса, такой как файл журнала, который регистрирует каждый загруженный файл, а также все сообщения об ошибках. Nohup отправляет stderr и stdout в файлы. С таким файлом вы можете позже восстановить прерванные загрузки и прерванные запуски.

Сначала протестируйте его с небольшим набором файлов, чтобы увидеть, получили ли вы команду и понравился ли результат.

person Thilo    schedule 19.12.2008

Я предлагаю вам отсоединить его от вашей оболочки с помощью nohup.

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

Скрипт будет выполняться до завершения — вам не нужно постоянно входить в систему.

Проверьте любые параметры, которые вы можете указать wget, чтобы он повторил попытку в случае сбоя.

person slim    schedule 19.12.2008

Если возможно, сгенерируйте контрольные суммы MD5 для всех файлов и используйте их, чтобы проверить, все ли они были переданы правильно.

person schnaader    schedule 19.12.2008
comment
Как вы это без файлов в первую очередь? Если он может вычислить MD5 на сервере, с которого загружает, ему, вероятно, не нужно прибегать к wget/http для их перемещения. - person Thilo; 19.12.2008

Начните с

nohup ./scriptname &

и вы должны быть в порядке. Также я бы порекомендовал вам регистрировать прогресс, чтобы вы могли узнать, где он остановился, если это произойдет.

wget url >>logfile.log

может быть достаточно.

Чтобы следить за прогрессом в прямом эфире, вы можете:

tail -f logfile.log
person Jonas Elfström    schedule 19.12.2008
comment
./scriptname & не будет продолжаться, если сеанс ssh будет прерван. - person mmx; 19.12.2008

Возможно, стоит рассмотреть альтернативную технологию, например rsync. Я использовал его во многих проектах, и он работает очень, очень хорошо.

person Joe Casadonte    schedule 02.03.2009