ما مدى موثوقية تنزيل أكثر من 100000 ملف عبر WGET من ملف bash فوق SSH؟

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

  •  22-08-2019
  •  | 
  •  

سؤال

لديّ ملف bash يحتوي على أوامر WGET لتنزيل أكثر من 100000 ملف يبلغ مجموعه حوالي 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 الخاصة بي في النهاية؟ هل يجب أن أتعرض للاستمتاع طوال الوقت؟ ماذا لو تحطمت جهاز الكمبيوتر المحلي الخاص بي/تم إيقافه؟

أيضا ، هل يعرف أي شخص عدد الموارد التي سيستغرقها هذا؟ هل أنا مجنون أن أرغب في القيام بذلك على خادم مشترك؟

أعلم أن هذا سؤال غريب ، فقط أتساءل عما إذا كان لدى أي شخص أي أفكار. شكرًا!

هل كانت مفيدة؟

المحلول

يستخدم

#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