آشنایی با wget – یک دانلود منیجر در ترمینال لینوکس

wget

چگونه کل یک وبسایت را برای بازدید آفلاین دانلود کنیم؟ چگونه تمام موزیک های یک سایت را دانلود کنیم؟ چگونه فایل هایی را که پشت صفحه ی لاگین هستند را دانلود کنیم؟ آیا یک دانلود منیجر خوب می خواهید؟

Wget یک ابزار است که اجازه ی انجام تمام کارهای بالا و بیشتر از آن را می دهد! چیزی که تفاوت زیادی بین Wget و سایر دانلود منیجرها به وجود می آورد این است که Wget  می تواند لینک های HTML را دنبال کند و به صورت بازگشتی لینک ها را دنبال کند و فایل ها را دانلود کند.

Wget مخفف web get است که یک ابزار Terminal برای دانلود از وب است. که پروتکل های مختلفی از جمله HTTP , HTTPS و FTP را ساپورت می کند. و همچنین non-interactive است یعنی این ابزار می تواند در background کار بکند بدون اینکه یوزر در سیستم لاگین کرده باشد. در صورتی که ارتباط Wget با سرور قطع شود تا زمانی که اتصال دوباره برقرار شود مرتب برای اتصال و ادامه ی دانلود تلاش می کند.

در ادامه با بررسی مثال های مختلف بعضی از موردهای  استفاده بی شمار  دستور Wget را بررسی می کنیم.

نکته: در صورتی که خواستید دستورها را تست کنید ‌آن ها را copy/past نکنید. خود آن ها را تایپ کنید زیرا ممکن است ارور کاراکتر وارد شده کد اسکی نیست را دریافت کنید.

۱- دانلود یک فایل از روی اینترنت ساده ترین کاری است که می توان با Wget انجام داد، که این کار را با حداکثر بازده ی ممکن انجام می دهد و در صورتی که بخواهیم می توانیم دانلود را قطع کنیم و بعدا آن را ادامه دهیم.
در تصویر زیر نحوی دانلود  یک کتاب آزاد را که در لینک زیر موجود

http://www.greenteapress.com/thinkcpp/thinkCScpp.pdf

است را با اسفاده از Wget در ترمینال لینوکس می بینید.

Screenshot from 2016-06-17 01-09-07

حال اگر بخواهیم دانلود را متوقف کنیم باید کلید های CTRL + C را بزنیم و اگر بعدا خواستیم دانلود را ادامه دهیم کافی است دستور بالا را دوباره در ترمینال وارد کنیم، دانلود فایل از جایی که قطع شده است ادامه می یابد.

۲- دانلود یک فایل از روی اینترنت و ذخیره کردن آن با نام متفاوت، در تصویر زیر نحوه ی دانلود همان کتاب آزاد را می بینید با این تفاوت که آن را با نام cpp book ذخیره کرده ایم.

Screenshot from 2016-06-17 01-31-09

۳- دانلود یک فایل و ذخیره ی آن در یک فولدر خاص، به صورت پیش فرض Wget فایلهایی را که دانلود می کند در مسیر جاری ترمینال ذخیره می کند ولی همان طور که در تصویر زیر می بینید همان کتاب را دانلود می کنیم ولی  یک مسیر دیگر را به عنوان آرگمان به Wget می دهیم تا فایل را در آن مسیر ذخیره کند. در تصویر زیر همان کتاب را دانلود کرده ایم , آن را در فولدرcppBook ذخیره کرده ایم.

Screenshot from 2016-06-17 02-15-54

۵- دانلود یک فایل آن هم فقط در صورتی که ورژن روی سرور از کپی آن روی کامپیوتر شما جدید تر باشد. در زیر نسخه ی وردپرس را  دانلود کرده ایم ولی آن را در صورتی دانلود می کند که نسخه روی سرور جدید تر از نسخه ی وردپرس روی کامپیوتر ما باشد:

۶- دانلود چند URL توسط Wget ، آدرس هایی که در یک فایل قرار داده شده اند و توسط جداکننده ی خط (n\ یا همان Enter) از هم جدا شده اند. در Wget می توان لینک های دانلود را درون یک فایل ریخت و فایل را به Wget داد تا همه ی آن ها را دانلود کند.

همان طور که در تصویر زیر می بینید یک فایل به اسم Books درست کرده ایم و در آن لینک دانلود دو کتاب آزاد را قرار داده ایم

Screenshot from 2016-06-17 02-41-26

حالا فایل را به عنوان ورودی به Wget می دهیم تا لینک های موجود در آن را دانلود کند. نحوه انجام این کار را در تصویر زیر مشاهده می کنید.

Screenshot from 2016-06-17 02-46-04
در تصویر بالا فایل Book را به Wget دادیم، آن هم دو لینک موجود در فایل را خواند یکی بعد از دیگری آن ها را دانلود کرد.

۷- دانلود فایل ها به وسیله ی Regular expression  توسط Wget ، فرض کنید می خواهید یک سری فایل دانلود کنید که اسمشان روی سرور ترتیب و نظم خاصی دارد در این صورت می توانید به جای دادن  لینک های عادی به Wget یک لینکی به Wget بدهید که حاوی ریگولار اکسپرشن باشد، در این حالت Wget بر طبق Regular Expression داده شده تمام فایل های موجود را دانلود می کند.

در آدرس

یک اسلاید ۵۰ صفحه ای است که هر صفحه از آن یک تصویر است که در زیر آدرس دو تصویر یک و دو را می بینید:

http://image.slidesharecdn.com/acm-icpcaboutio-130220032706-phpapp02/95/acmicpc-about-io-1-638.jpg?cb=1361953536

http://image.slidesharecdn.com/acm-icpcaboutio-130220032706-phpapp02/95/acmicpc-about-io-2-638.jpg?cb=1361953536

تنها تفاوت دو لینک بالا در قسمتی است که آن را به رنگ قرمز درآورده ام. حالا برای آن که لینک تصویر شماره ی ۲۰ اسلاید را به دست بیریم کافی است جای قسمت قرمز عدد بیست را بگذاریم. در واقع بین تصویرها یک نظم خاص وجود دارد. برای دانلود همه ی آن ها می توانیم یک ریگولار اکسپرشن بنویسیم که تمام پنجاه تصویر درون اسلاید را دانلود کند. نحوه انجام کار بالا را در تصویر زیر مشاهده می کنید:

Screenshot from 2016-06-17 03-01-55

همان طور که می بینید جای قسمت قرمز در لینک عبارت {۵۰..۱} را نوشته ام که طبق این رگولار اکسپرشن Wget تمام لینک های ممکن را می سازد و بعد دانلود می کند و بلا فاصله آن ها را یکی پس از دیگری دانلود می کند. در آخر هم یک پیغام در ترمینال چاپ می کند که تعداد فایل های دانلوده شده و حجم کل دانلود شده را می گوید. که آن را در تصویر زیر مشاهده می کنید:

Screenshot from 2016-06-17 03-02-26

در تصویر زیر هم ۵۰ تصویر دانلود شده از اسلاید را می بینید:

Screenshot from 2016-06-17 03-12-08

۸- دانلود تمام یک وبسایت به همراه تمام صفحه های لینک شده و فایل ها

۹- دانلود تمام شی ها با پسوند مشخص از یک آدرس وب، فرض کنید در یک صفحه ای از یک وبسایت تصویر ، موزیک و یا ویدیو هایی وجود دارد و شما می خواهید تمام آبجکت ها با آن پسوند خاص را از آن صفحه دانلود کنید. در این آدرس

http://windows.microsoft.com/en-us/windows/wallpaper

تعدادی والپیپر وجود داد که پسوند آن ها jpg است همه ی والپیپرهای موجود در آدرس بالا را با استفاده از Wget به شکل زیر دانلود می کنیم و تصاویر را در پوشه ی wallpaper ذخیره می کنیم. برای دیدن هر کدام از option ها می توانید به راهنمای Wget مراجعه کنید که این کار را می توان با نوشتن man wget در ترمینال انجام داد.

Screenshot from 2016-06-17 11-39-44

بعد از وارد کردن دستور در ترمینال (قسمت رنگی در تصویر بالا) دانلود  تمام تصاویر با فرمت jpg,png و gif شروع می شود بعد از اینکه دانلودها تمام شد یک پیغام در ترمینال چاپ می شود که می گوید چند فایل دانلود شده است و حجم فایل های دانلود شده چقدر است.

Screenshot from 2016-06-17 12-09-09

در تصویر زیر والپیپرهای دانلود شده را می بینید:

Screenshot from 2016-06-17 12-08-55
همین کار را با شی ها با پسوندهای متفاوت دیگر هم می توانید انجام دهید، مثلا فرض کنید در یک صفحه تعداد زیادی موزیک برای دانلود قرار داده شده است،به جای دانلود تک تک آن ها می توانید همه ی آن ها را یک جا دانلود کنید.

 

۱۰- بعضی از سایت ها برای دانلود یک فایل نیاز به نام کاربری و پسورد دارند که وقتی در مرورگر و یا دانلود منیجر های دارای رابط گرافیکی آن ها را باز می کنیم از ما نام کاربری و رمز را می پرسد. ولی در Wget باید به این طریق نام کاربری و پسورد را داد.

 

۱۱- دانلود از صفحه هایی که پشت صفحه ی لاگین قرار دارند، در بعضی از موارد قبل از اینکه به یک صفحه از یک سایت برسیم باید ابتدا در سایت لاگین کنیم. در Wget می شود این کار را کرد. ابتدا مانند مثال زیر در صفحه ی لاگین وارد می شویم و کوکی که سرور ثبت می کند را در یک فایل ذخیره می کنیم بعد از آن از صفحه ی مورد نظر دانلود می کنیم در حالی که  فایل کوکی را به عنوان ورودی به Wget می دهیم تا صفحه ی لاگین را پشت سر بگذارد.

 

۱۲- فهمیدن مشخصات یک فایل از جمله حجم، نوع و آخرین زمان تغییر آن فایل بر روی سرور، با کمک Wget و گزینه یspider می توان یک سری از مشخصات فایل را بدون دانلودش دید. نحوه ی انجام این کار را در تصویر زیر می بینید:

Screenshot from 2016-06-17 15-51-19

 

۱۳- دانلود یک فایل و نمایش آن در ترمینال بدون ذخیره سازی آن بر روی سیستم

Screenshot from 2016-06-17 17-19-45

 

۱۴- چک کردن تمام لینک های موجود در یک وبسایت توسط Wget، با استفاده از wget و آپشن های spider و  recursive می توان تمام لینک های موجود در یک وبسایت را به صورت بازگشتی چک کرد و لینک های خراب را پیدا کرد. در تصویر زیر چنین کاری را بر روی سایت http://www.howtogeek.com/ انجام داده ایم که خروجی را در فایل logfile ریخته ایم.

Screenshot from 2016-06-17 17-13-24

فایل logfile را در زیر مشاهده می کنید که می توان با یک سرچ ساده در آن و با پیدا کردن پاسخ های غیر از ۲۰۰ ok تمام لینک های خراب را پیدا کرد.

Screenshot from 2016-06-17 17-14-06

 

۱۵- محدود کردن سرعت دانلود هنگام دانلود با Wget، گاهی اوقات ممکن است از پهنای باندمان بخواهیم استفاده های دیگر هم بکنیم و بیشتر آن را به دانلود اختصاص ندهیم برای این کار می توانیم از آپشن limit-rate استفاده کنیم که در تصویر زیر نحوه ی استفاده از آن را می بینید که سرعت دانلود را به ۵KB محدود کرده ایم.

Screenshot from 2016-06-17 17-38-04

 

منبع:

 

http://www.labnol.org/software/wget-command-examples/28750/http://www.computerhope.com/unix/wget.htmhttp://www.tecmint.com/10-wget-command-examples-in-linux/https://www.gnu.org/software/wget/manual/html_node/Advanced-Usage.htmlhttps://www.gnu.org/software/wget/manual/html_node/Very-Advanced-Usage.htmlhttp://www.unixtutorial.org/2014/07/how-to-use-wget-and-curl/http://xahlee.info/linux/wget_curl_tutorial.html

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

۴ دیدگاه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *