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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
534
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

Начни с

nohup ./scriptname &

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

wget url >>logfile.log

могло быть достаточно.

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

tail -f logfile.log

./scriptname & не будет продолжаться, если сеанс ssh будет прерван.

mmx 19.12.2008 11:24

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

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

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

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

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

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

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

Ответ принят как подходящий

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

#nohup ./scriptname &> logname.log

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

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

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


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

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

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

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

Thilo 19.12.2008 11:40

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

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