الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح أداة تحميل الملفات و المواقع wget

مغلق
بدأه amine00 في 16 أغسطس 2005 · 8 رد · 3,821 مشاهدة · في نظام تشغيل Unix & Linux
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته

سأحاول في هذا الموضوع عمل شرح مبسط لأداة تحميل الملفات و المواقع wget، و التي تعمل من سطر اﻷوامر.

فإذا كنت من محبي سطر اﻷوامر، فإنك لن تجد -بإذن الله- أي صعوبات في استخدام هذه اﻷداة.

و أما إن كنت لا تفهم شيئا في سطر اﻷوامر فلا تخف، فإن wget برأيي من أفضل اﻷدوات لتعلم و تعود استعمال سطر أوامر اللينكس.

1. مقدمة

Gnu Wget برنامج مجاني يوفر أداة قوية و مبسطة لتحميل الملفات بواسطة بروتوكولات http و https و ftp، و هي البروتوكولات اﻷكثر استعمالا في الشبكة العنكبوتية. و من أبرز مميزات هذا البرنامج :

- أنه مكتوب ب لغة C مما يسهل حمله على مختلف أنظمة التشغيل، وليس فقط نظام اللينكس.

- غير تحاوري مع المستخدم، بمعنى أنه لا يحتاج إلى حضور دائم و تدخلات من المستخدم أثناء التنفيذ ﻷنه يعمل في الخلفية background. و هذا يعني أن المستخدم بإمكانه إنهاء الجلسة و غلق الواجهة الرسومية دون أن يؤدي ذلك إلى وقف التحميل ب wget. و هذا يسهل كذلك استعمال wget في سكربتات أو في منفذ المهام cron.

- في حالة الانقطاع المفاجئ للتحميل فإن wget بإمكانه إكمال التحميل من آخر نقطة دون الحاجة إلى إعادة تحميل الملف كاملا.

- التحميل الحلقي أو الدوري (recursive)، و هو المستعمل لتحميل مواقعhttp أو شجرة سرفرftp بالكامل و ذلك بتتبع الروابط الموجودة في أول ملف محمل و تحميلها ثم إعادة العملية على كل ملف بطريقة دورية. و هذه الطريقة تمكنك من عمل نسخة محلية لموقع في الانترنت لزيارتها في أي وقت و لو بدون اتصال على الانترنت.

- إمكانية التحكم في سرعة التحميل، و الفائدة من هذا هي وضع حد للسرعة حتى لا تستهلك الباندويث بأكمله في حالة رغبتك الدخول على الانترنت في نفس الوقت.

و رغم هذه المزايا و غيرها فإن wget لا يخلو من بعض العيوب و أهمها :

- عدم تحمل عدد كبير من البروتوكولات. حيث أن wget لا يسمح بالتحميل باستحمال بروتوكولات مثل rtsp و mms و p2p. و هذا راجع إلى التركيز الكبير على http و ftp.

- عدم القدرة على تتبع روابط الجافا سكربت.

- العدد الهائل من الخيارات المتوفرة مما قد يشكل متاهة للمستخدم و كذلك بعض المفاجئات عند استخدام بعض الخيارات مع البعض.

2. التحميل و التثبيت

يوجد احتمال كبير لوجود wget في نظامك. في حالة عدم وجودها فهذا عنوان التحميل :

http://ftp.gnu.org/pub/gnu/wget

المرجو تحميل آخر نسخة (حاليا 1.10)، ثم تركيبها بالطريقة المعتادة :

$ tar zxvf wget-1.10.tar.gz
$ cd wget-1.10
$ ./configure
$ make
$ su
Passwd ...
# make install

يمكنك التأكد من التركيب باﻷمر التالي الذي سوف يعطيك معلومات عن النسخة المستعملة :

$ wget -V
GNU Wget 1.10

Copyright (C) 2005 Free Software Foundation, Inc.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

Originally written by Hrvoje Niksic <hniksic@xemacs.org>.

3. أمثلة بسيطة للاستعمال

المثال اﻷول : سنحاول تحميل سورة الفاتحة من هذا العنوان : http://quran.islamway.com/hudhaifi/001.mp3

افتح الطرفية و ادخل إلى المجلد الذي تريد التحميل إليه ثم نفذ اﻷمر التالي :

$ wget http://quran.islamway.com/hudhaifi/001.mp3

إذا صار كل شيء على ما يرام فخرج اﻷمر سيكون على الشكل التالي :

--11:25:00--  http://quran.islamway.com/hudhaifi/001.mp3
           => `001.mp3.1'
Resolving quran.islamway.com... 204.187.100.94
Connecting to quran.islamway.com|204.187.100.94|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 246,410 (241K) [audio/mpeg]

100%[====================================>] 246,410       16.62K/s    ETA 00:00

11:25:18 (15.72 KB/s) - `001.mp3' saved [246410/246410]

لاحظ أن التحميل بدأ بالضبط في الساعة 11:25:00 و انتهى في 11:25:18 أي بعد 18 ثانية. و أن حجم الملف 241 كيلو، و السرعة المتوسطة للتحميل هي 15.72 كيلو بايت في الثانية.

المثال الثاني : اﻵن سنحاول تحميل سورة البقرة و حجم الملف هو 25 م ب. الملف أضخم من ملف سورة الفاتحة، إذن سيأخذ وقتا أطول مع احتمال مشكلين : اﻷول هو انقطاع التحميل في الوسط لسبب من اﻷسباب. و الثاني هو استعمال wget للباندويث بأكمله مما سيؤثر على سرعة التصفح إذا أردت الدخول على الانترنت في نفس الوقت. لعلاج هذين المشكلين سنستعمل اﻷمر مع خيارات ثانوية على الشكل التالي :

$ wget -c --limit-rate=10k http://quran.islamway.com/hudhaifi/002.mp3

النتيجة ستكون على هذا الشكل :

--11:47:30--  http://quran.islamway.com/hudhaifi/002.mp3
           => `002.mp3'
Resolving quran.islamway.com... 204.187.100.94
Connecting to quran.islamway.com|204.187.100.94|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 26,472,448 (25M), 26,442,112 (25M) remaining [audio/mpeg]

 1% [>                                     ] 379,251       10.01K/s  ETA 42:28

لاحظ أن سرعة التحميل لا تتجاوز 10.01 كيلو في الثانية. و السبب في ذلك هو استعمال الخيار التالي:

--limit-rate=10k

فالحرف k يعني كيلو، كذلك يمكن استعمال الحرفين m و g (ميغا و جيغا). في حالة عدم وضع أي حرف فإن السرعة تكون بالبايت في الثانية.

الخيار c يعني continue و هو يسبب إكمال تحميل سابق من آخر نقطة دون الحاجة إلى إعادة التحميل من البداية. فمثلا إذا قطعنا التحميل السابق و أردنا إكماله فيما بعد فاﻷمر هو نفسه (أو معدل إذا أردت حذف أو تغيير خيار تحديد السرعة):

$ wget -c --limit-rate=10k http://quran.islamway.com/hudhaifi/002.mp3

و الخرج سيكون على هذا الشكل :

--11:57:24--  http://quran.islamway.com/hudhaifi/002.mp3
           => `002.mp3'
Resolving quran.islamway.com... 204.187.100.94
Connecting to quran.islamway.com|204.187.100.94|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 26,472,448 (25M), 26,442,112 (25M) remaining [audio/mpeg]

 5% [+=>                                    ] 1,553,139     16.61K/s    ETA 24:29

لاحظ أن ما سبق تحميله يشار إليه بعلامة زائد.

يتبع إن شاء الله

#2

السلام عليكم

أولا أرحب بك أخي أمين في منتدانا المتواضع و أرجو أن تستمر معنا .

لم يمض وقت على تسجيلك في هذا المنتدى حتى باشرت بالكتابة ، :)

بارك الله فيك و زادك علما .

MPSI/MP* - CPR Tanger

#3

آمين و بارك الله فيك و شكرا لك على الترحيب الطيب

#4

أهلا بك أخي بيننا ، وأسأل الله أن ينفع بك الإسلام والمسلمين.

System Engineer

Red Hat Certified Engineer

Red Hat Certificate Number

805010381752078

#5

آمين. جزاك الله خيرا

#6

جزاك الله خير اخوي امين..

#7

و جزاك الله خيرا

تتمة :

4. أمثلة متقدمة

اعلم أن wget توفر عددا هائلا من الخيارات و طرق التحميل التي قد تكتشفها إذا دعتك الضرورة لاستعمالها، و لن أتطرق في هذه الفقرة إلا إلى البعض منها و التي أعتبرها ذات أهمية كبرى.

المثال اﻷول : تغيير مسار التحميل.

المسار الافتراضي الذي تحفظ فيه الملفات المحملة هو المجلد الحالي الذي نفذ منه أمر التحميل. لتغيير هذا المسار إلى مجلد معين نستخدم الخيار P- :

$ wget -c http://quran.islamway.com/hudhaifi/002.mp3 -P /home/amine/quran

المثال الثاني : التحميل في الخلفية (background).

لا شك أنك لاحظت أنه عند التنفيذ العادي ل wget من سطر اﻷوامر فإن البرنامج يستحوذ على التحكم في الطرفية و لا يمكنك عمل أي شيء إلا بعد اكتمال أو وقف التحميل. لجعل التحميل في الخلفية والاستمرار على العمل في الطرفية نستخدم الخيار b- هكذا :

$ wget -c -b http://quran.islamway.com/hudhaifi/002.mp3

و النتيجة تكون على هذا الشكل :

$ wget -c -b http://quran.islamway.com/hudhaifi/002.mp3
Continuing in background, pid 19025.
Output will be written to `wget-log'.
$

لاحظ أن البرنامج يشير في السطر اﻷول إلى أن رقم العملية هو 19025. و في السطر الثاني يشير إلى أن خرج العملية سيحفظ في الملف wget-log. ثم يعيد التحكم إليك.

و هذه نظرة على محتوى الملف wget-log:

--15:48:38--  http://quran.islamway.com/hudhaifi/002.mp3
           => `002.mp3'
Resolving quran.islamway.com... 204.187.100.94
Connecting to quran.islamway.com|204.187.100.94|:80... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 26,472,448 (25M), 23,767,085 (23M) remaining [audio/mpeg]

       [ skipping 2600K ]
 2600K ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,,,,,,,,,, ,......... 10%   15.25 KB/s
 2650K .......... .......... .......... .......... .......... 10%   16.45 KB/s
 2700K .......... .......... .......... .......... .......... 10%   16.36 KB/s
 2750K .......... .......... .......... .......... .......... 10%   16.80 KB/s
 2800K .......... .......... .......... .......... .......... 11%   16.36 KB/s

لإنهاء عملية التحميل، نستخدم اﻷمر kill مع رقم العملية و الخيار 9-:

$ kill -9 19025

المثال الثالث : تحميل مجموعة من الروابط محفوظة في ملف نصي و هذا شيء مفيد جدا.

نريد الآن تحميل عددا من السور القرآنية مثلا دون إعادة تنفيذ اﻷمر لكل سورة. سنستعمل إذن ملفا يحتوي على روابط السور كل رابط في سطر مستقل. مثلا الملف url_quran.txt لتحميل العشر سور اﻷخيرة :

$ cat url_quran.txt
http://quran.islamway.com/hudhaifi/105.mp3
http://quran.islamway.com/hudhaifi/106.mp3
http://quran.islamway.com/hudhaifi/107.mp3
http://quran.islamway.com/hudhaifi/108.mp3
http://quran.islamway.com/hudhaifi/109.mp3
http://quran.islamway.com/hudhaifi/110.mp3
http://quran.islamway.com/hudhaifi/111.mp3
http://quran.islamway.com/hudhaifi/112.mp3
http://quran.islamway.com/hudhaifi/113.mp3
http://quran.islamway.com/hudhaifi/114.mp3 
$

لتحميل الروابط الموجودة بهذا الملف نستعمل i- على هذا الشكل :

$ wget -c -i url_quran.txt

المثال الرابع : التحميل من مواقع ftp أو http محمية بكلمة السر

العديد من مواقع ال ftp و بعض المواقع http تستعمل حماية بواسطة اسم المستخدم و كلمة السر حيث لا يمكنك الدخول إلى هذه المواقع و التحميل منها إلا بعد إدخال معلومات التعريف. و الصورة التالية تبين مثالا لأحد المواقع الذي يطلب ذلك :

passwd.png

نفترض أنك تريد تحميل الملف test.zip من عنوان http التالي مثلا: http://pub.server.com/test/test.zip

و أن معرفك هو user01 و كلمة السر هي pass01

طريقة التحميل تكون على الشكل التالي :

$ wget -c --http-user=user01 --http-password=pass01 http://pub.server.com/test/test.zip

و إذا كان الخادم من نوع ftp مثل : ftp://pub.server.com/test/test.zip

فإن التحميل يتم بالطريقة التالية :

$ wget -c --ftp-user=user01 --ftp-password=pass01 ftp://pub.server.com/test/test.zip

يتبع بإذن الله تعالى، و الحلقة القادمة عن طريقة تحميل موقع بالكامل

#8

تتمة

5.التحميل الحلقي recursive download

إن من أهم مميزات برنامج wget إمكانية التحميل الحلقي الذي يمكنك من تحميل موقع كامل أو فرع من شجرة الموقع من الانترنت إلى جهازك.

من المعلوم أن شبكة الانترنت تضم مجموعة كبيرة من السرفرات المرتبطة فيما بينها بطريقة عنكبوتية. و كل خادم من نوع ftp أو http يضم نظام ملفات شجري. لتحميل الموقع بالكامل يجب تحميل كل روابط الموقع بطريقة حلقية و هو المسمى ب recursive download. فكل رابط محمل توجد فيه روابط أخرى يجب تحميلها و هكذا دواليك إلى أن يتم تحميل جميع ملفات الموقع. و حتى ندخل في صلب الموضوع فهذا أول تطبيق لفهم الطريقة:

المثال اﻷول :

نريد أن نحمل هذا الموقع مثلا : http://www.ibnbaz.org.sa

بعد الدخول إلى المجلد الذي نريد التحميل إليه ننفذ اﻷمر التالي :

$ wget -c -r -k http://www.ibnbaz.org.sa

أو

$ wget -crk http://www.ibnbaz.org.sa

شرح الخيارات :

c- سبق شرحه

r- هنا إشارة إلى التحميل الحلقي recursive. بدون هذا الخيار فإن التحميل سيقتصر على الصفحة الرئيسية من الموقع ثم يتوقف.

k- إشارة إلى تحويل الروابط. فعند الانتهاء من تحميل الموقع فإن البرنامج يحول جميع الروابط كي تشير إلى الملفات المحملة على جهازك بدل الملفات التي في الخادم. و أما روابط الملفات التي لم تحمل فإنها تحول إلى روابط مباشرة إلى عنوان هذه الملفات في الانترنت. و هذا مما يسهل التصفح على النسخة المحملة.

بعد نهاية التحميل ستجد مجلدا باسم www.ibnbaz.org.sa يحوي الموقع المحمل.

المثال الثاني :

الآن نريد تحميل محتوى مجلد واحد من الموقع دون تحميل الموقع بالكامل. نأخذ كمثال هذا الموقع الذي يحتوي على مجموعة من برامج و توزيعات اللينكس:

http://mirror.aarnet.edu.au/pub

نريد أن نحمل جميع اﻷقراص الخاصة بتوزيعة السلاكوير الموجودة في المجلد slackware و بالضبط في هذا العنوان:

http://mirror.aarnet.edu.au/pub/slackware

لو اتبعنا طريقة تحميل المثال اﻷول فإن هذا سيؤدي إلى تحميل الموقع بأكمله بما فيه جميع المجلدات اﻷخرى، إذن لتفادي ذلك فإن اﻷمر هو :

$ wget -c – r -k -np http://mirror.aarnet.edu.au/pub/slackware

لاحظ np- و معناه no parent فالبرنامج لا يحمل المجلد اﻷب للمجلد slackware و بالتالي فإنه لا يحمل محتواه.

المثال الثالث :

لتحميل الملفات ذات امتداد معين. لتحميل جميع الملفات ذات الامتداد pdf فقط من هذا الموقع :

http://www.free-itebooks.com

نتبع الطريقة التالية :

wget -c -r -k -A.pdf http://www.free-itebooks.com

لاختيار أكثر من امتداد واحد مثلا pdf و ps و zip . نفصل بين الامتدادات بعلامة فاصلة :

$ wget -c -r -k -A.pdf,ps,zip http://www.free-itebooks.com

انتهى بحمد الله. أتمنى أن أكون وفقت في هذا الطرح و السلام عليكم و رحمة الله

#9

جزاك الله كل خير وبارك الله فيك ..

صراحة برنامج روعة ومفيد جدا جدا ..

شكر الله لك ياخوي امين ..

وياليت تستمر بمثل هذه الدروس واجرك على الله .. :)

هذا الموضوع مغلق.

مواضيع مشابهة