Насколько надежным было бы загружать более 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 за все время? Что, если мой локальный компьютер разбился/был закрыт?
Кроме того, кто -нибудь знает, сколько ресурсов это потребуется? Я сумасшедший, чтобы захотеть сделать это на общем сервере?
Я знаю, что это странный вопрос, просто интересно, есть ли у кого -нибудь какие -либо идеи. Спасибо!
Решение
Использовать
#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. Анкет Я использовал его во многих проектах, и это очень хорошо работает.