Насколько надежным было бы загрузить более 100 000 файлов через wget из bash-файла через ssh? - PullRequest
0 голосов
/ 19 декабря 2008

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

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

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

Ответы [ 7 ]

4 голосов
/ 19 декабря 2008

Используйте

# nohup ./scriptname &> logname.log

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

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

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


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

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

1 голос
/ 19 декабря 2008

Зависит от надежности коммуникационной среды, аппаратного обеспечения, ...!

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

0 голосов
/ 02 марта 2009

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

0 голосов
/ 19 декабря 2008

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

0 голосов
/ 19 декабря 2008

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

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

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

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

0 голосов
/ 19 декабря 2008

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

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

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

0 голосов
/ 19 декабря 2008

Начните с

nohup ./scriptname &

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

wget url >>logfile.log

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

Для отслеживания прогресса в реальном времени вы можете:

tail -f logfile.log
...