Насколько надежным было бы загружать более 100 000 файлов через WGET из файла BASH через SSH?

StackOverflow https://stackoverflow.com/questions/380341

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть файл 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 за все время? Что, если мой локальный компьютер разбился/был закрыт?

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

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

Это было полезно?

Решение

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

#nohup ./scriptname &> logname.log

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

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

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


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

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

Другие советы

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

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

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

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

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

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

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

Сценарий будет выполнен до завершения - вам не нужно войти в систему.

Проверьте на любые варианты, которые вы можете дать Wget, чтобы он повторно повторно.

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

Начать с

nohup ./scriptname &

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

wget url >>logfile.log

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

Чтобы контролировать прогресс вживую, вы могли бы:

tail -f logfile.log

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top