نقطه ویرگول;

هر از گاهی از هر چیزی

هر از گاهی از هر چیزی

شگفتی های دستور wget

شنبه, ۲۱ اسفند ۱۳۸۹، ۱۰:۳۱ ب.ظ
دستور wget یکی از مناسب ترین گزینه ها برای دانلود از اینترنت است،wget می تواند حالت هایی پیچیده از دانلود رو به زیبایی مدیریت کند،مثلا دانلود فایلهایی با حجم بالا،دانلود های بازگشتی،دانلود های غیر تعاملی،دانلود چندین فایل و غیره.در این مقاله میخواهم ۱۵ روش با مثال برای حالت های مختلف دانلود بیان کنم.

۱−دانلود یک فایل با wget
با مثال زیر می توانید یک فایل را از اینترنت و آدرس مورد نظرتون دانلود کرده و در دایرکتوری جاری ذخیره کنید.
 wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
در هنگام دانلود یک Progress Bar یا همان نوار پیشرفت به شما نشان داده میشود که دارای اطلاعاتی از دانلود است.
 
هنگام دانلود:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Saving to: `strx25-0.9.2.1.tar.bz2.1'
31% [=================> 1,213,592 68.2K/s eta 34s
بعد از اتمام دانلود:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Saving to: `strx25-0.9.2.1.tar.bz2'
100%[======================>] 3,852,374 76.8K/s in 55s
2009-09-25 11:15:30 (68.7 KB/s) - `strx25-0.9.2.1.tar.bz2' saved [3852374/3852374]
۲−دانلود و ذخیره کردن فایل با نامی دیگر با استفاده از wget -O
به صورت پیشفرض،دستور wget نام کلمه ای که بعد از آخرین اسلش / قرار دارد را به عنوان اسم فایل قرار میدهد که شاید گاهی اوقات مناسب نباشد.
ناصحیح:به عنوان مثال ما فایلی با به صورت زیر دانلود و ذخیره کردیم:
download_script.php?src_id=7701
wget http://www.vim.org/scripts/download_script.php?src_id=7701
حتی اگر فایل دانلود شده در قالب زیپ هم باشد،به صورت زیر ذخیره و نمایش داده میشود:
ls
download_script.php?src_id=7701
صحیح:شکل صحیح قضیه به این شکل است که ما با کمک دستور wget -o این مشکل را حل کنیم:
 wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
۳− تعیین کردن سرعت دانلود با استفاده از wget –limit-rate
زمانیکه ما دستور wget رو اجرا میکنیم به صورت پیش فرض کل پهنای باندمون رو اشغال میکنه،شاید خیلی جاها این کار مناسب نباشه و مشکلاتی رو در پی داشته باشه،با این پیش فرض میتونیم سرعت دانلودمون رو لیمیت کنیم.
 wget --limit-rate=۱۰k http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
 
۴− ادامه دانلود نیمه تمام مانده با استفاده از wget -c
می تونید فایلی که در اوسط دانلود متوقف کردید را با استفاد از دستور زیر ادامه بدهید:
wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
 
این روش زمانی که یک فایل بزرگ رو دانلود میکنیم و وسطای دانلود یه وقفه به وجود میاد سودمنده...
 
۵−دانلود در پس زمینه با wget -b
برای دانلود های بزرگ بهتره اونا رو تو پس زمینه قرار بدید :
$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
Continuing in background, pid 1984.
Output will be written to `wget-log'
با استفاده از دستور tail -f میتونید وضعیت دانلودتون رو مشاهده کنید:
tail -f wget-log
Saving to: `strx25-0.9.2.1.tar.bz2.4'
0K .......... .......... .......... .......... .......... 1% 65.5K 57s
50K .......... .......... .......... .......... .......... 2% 85.9K 49s
100K .......... .......... .......... .......... .......... 3% 83.3K 47s
150K .......... .......... .......... .......... .......... 5% 86.6K 45s
200K .......... .......... .......... .......... .......... 6% 33.9K 56s
250K .......... .......... .......... .......... .......... 7% 182M 46s
300K .......... .......... .......... .......... .......... 9% 57.9K 47s
۶−پنهان کردن واسط کاربری و ارائه wget همانند یک مرورگر با استفاده از –user-agent
بسیاری از سایت ها اجازه دانلود فایل رو زمانیکه رابط کاربریتون یک مرورگر نباشه رو نمیدهند،در این وضعیت میتونید رابط کاربریتون رو همانند مثال زیر تغییر بدهید:
wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" URL-TO-DOWNLOAD
۷−امتحان آدرس دانلود توسط wget –spider
زمانیکه شما میخواهید برای دانلودتان برنامه ریزی کنید باید از وجود لینک و آدرس های دانلودتان مطمئن باشید،برای این کار به صورت زیر عمل کنید:
wget --spider DOWNLOAD-URL
اگه url جواب صحیح بگیرد به صورت زیر خواهد شد:
 wget --spider download-url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.
این یعنی شما میتونید در وقت برنامه ریزی شده دانلودتون رو انجام بدهید،اما اگر شما جواب ناصحیح بگیرد به صورت زیر خواهد بود:
 wget --spider download-url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 404 Not Found
Remote file does not exist -- broken link!!!
۸− افزایش مقدار تلاش دوباره، برای دانلود یک فایل با wget –tries
اگر سرعت اینترنتتون پایینه و اگه حجم فایل دریافتی بالاست احتمال شکست در دانلود وجود دارد،wget به صورت پیشفرض ۲۰ بار برای دانلود دوباره فایل اقدام میکند که میتوانید به صورت زیر این مقدار را افزایش دهید:
wget --tries=75 DOWNLOAD-URLk!!!
۹−دانلود چندین فایل از آدرس های مختلف با Wget -i
ابتدا آدرس فایلهایی که قرار است دانلود شوند را در یک فایل متنی ذخیره می کنیم:
cat > download-file-list.txt
URL1
URL2
URL3
URL4
سپس به عنوان ورودی،فایل را دریافت میکنیم به صورت زیر:
wget -i download-file-list.txt
۱۰− دانلود کل یک وبسایت با استفاده از wget –mirror
دستور زیر برای زمانیکه میخواهید یک وبسایت را به صورت کامل دانلود کرده و به صروت لوکال استفاده کنید:
wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
۱۱−نپذیرفتن فایل تایپ های(File Type) خاص با wget –reject
wget --reject=gif WEBSITE-TO-BE-DOWNLOADED
۱۲−ایجاد لاگ فایل جدا گانه با wget -o
wget -o download.log DOWNLOAD-URL
۱۳−خروج از دانلود زمانیکه حجم فایل دانلود بیش از حد مجاز باشد wget -Q
برای مثال میخوایید زمانیکه حجم فایل دانلود بیش از حد مجاز مثلا بیشتر از ۵ مگ شد از دانلود خارج شود:
wget -Q5m -i FILE-WHICH-HAS-URLS
۱۴−دانلود فایل هایی با پسوند خاص با wget -r -A
اگه دلتان میخواهد کل فایلهای ویدئویی، صوتی ،پی دی اف یا هر چیز دیگری را که مد نظرتون هست را از یک سایت دانلود کنید به این صورت عمل کنید:
 wget -r -A.pdf http://url-to-webpage-with-pdfs/
۱۵− دانلود به صورت FTP با wget
wget ftp-url
اگه اف تی پی نیاز به یوزنیم یا پسورد داشت به صورت عمل کنید:
 wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
 
امیدوارم این مطلب به دردتون خورده باشه...

نظرات  (۲۰)

خیلی خوبه
ممنون
خواهش میکنم
ممنون دستوراتی کاربردی بود
اما هنوز متوجه نشدم چطوری میشه از یک سایت میرور درست کرد بصورتی که فقط یک نوع فایل مثلا jpg با حجم بالای 250 کیلوبایت ذخیره بشه(!)
در این بین فایلهای تکراری رو هم دانلود نکنه و...
و بعدش هم از یک آدرس خاص مثل image.php.com و www.php.com دانلود رو بکنه ولی وارد آدرسهای forum.php.com نشه(!)
(باید یه GUI اختصاصی درست بکنم :دی)
امکانش هست؟ خسته شدم از بس وارد این فضای مسخره ویندوز شدم و از picaloader استفاده کردم!!!!!!!!!!!!!!
برای این کار می تونید از نرم افزار web httrack استفاده کنی.
برای نمونه من از کل کودکس وردپرس یه کپی گرفتم که ازش استفاده می کنم به صورت آفلاین (چون فیـ.ـلتـ.ـرشده)
http://www.httrack.com/
ممنون ولی این برنامه قابلیت تفکیک قائل نمیشه(!)
خیلی وقتها تصاویر دو دو یا ده‌ها بار کپی میکنه(!)
ولی wget اینکارو نمیکنه!
کلا شگفتی های لینوکس.
ما رو بیشتر با ترمینال لینوکس آشنا کنید.
موفق و سر بلند
سلام
بسیار مفید بود.
برای انتقال کلیه فایلهای داخل یک پوشه از چه دستوری میشه استفاده کرد؟
راستی یک سوال ابتدایی دیگه!!
چطور میشه فایل تکستی که با دستور cat> ایجاد میشه رو بست؟
مرسی
سلام دوست عزیز
برای سوال اول:
http://superuser.com/questions/62141/linux-how-to-move-all-files-from-current-directory-to-upper-directory
برای سوال دوم:
http://www.ahinc.com/linux101/textfiles.htm
نرم‌افزارهای زیادی برای اینکار وجود داره. بهترین گزینه اینه که لیست پیوندها و مشخصاتشون رو با wget داخل یک فایل پایپ کنید و سپس فایل رو با یک اسکریپت پردازش کنید و اونهایی که می‌خواهید دانلود کنید. برنامه‌هایی مثل SiteSucker هم همینکار را می‌کنند.
کلید میانبر
Ctrl D در سیستم‌های یونیکس و
Ctrl Z در سیستم‌های ویندوزی مشخص کننده وضعیت (نه کاراکتر) انتهای فایل (End Of File) هستند. لذا اگر در برنامه ترمینایل هستید که دارید محتویات یک فایل رو مشخص می‌کنید، با این کلید ترکیبی انتهای این رو مشخص می‌کنید.
البته می‌تونید برای راحتتری از
:>file
echo > file
استفاده کنید.
دقت داشته باشید که در اکثر موارد آدرس یک فایل در اینترنت می‌تونه حاوی کاراکترهایی باشه که استفاده اونها در ترمینال معانی خاصی داره، مثل & و > . بنابراین بهتره کل آدرس داخل کوتیشن قرار بگیره
wget "address here" -o
بهتر نبود منبع رو هم میگفتید؟
http://www.thegeekstuff.com/2009/09/the-ultimate-wget-download-guide-with-15-awesome-examples
ممنون که شما فرمودید :-)
سلام
آموزش جالبی بود خیلی ممنون
ولی میشه بگین دستورات دیگه ای هم مثل wget وجود دارن که همین کار دانلود رو انجام بدن ؟
alert('thank you :D')
۱۹ آذر ۹۰ ، ۱۰:۴۹ هادی صفی اقدم
سلام. ممنون بخاطر این توضیح خوب و عالی در مورد wget.
یک سوال!
من میخام مثلا dante.ctan.org/CTAN/systems/texlive/tlnet/ را دانلود کنم.
اما یک فایل html میده.
میخام پوشه‌ها و فایل‌های داخلش را مثلا تا ۵ مرحله توش بره و دانلود کنه. ممنون میشم راهنمایی کنید.
با تشکر
پایدار باشید و برقرار
خوب بود ممنون از الطاف جلیلتون
۱۴ ارديبهشت ۹۱ ، ۲۳:۲۹ مثالهای کاربردی دستور cURLPHPDevelopers.ir | PHPDevelopers.ir
[...] cURL شما میتوانید از wget برای دانلود فایلها استفاده کنید،مثالهایی از wget 3-دانلود چندین فایل در یک زمان ما میتونیم چندین فایل رو [...]
ممنون،شما هم همینطور
خواهش میکنم بزرگوار

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی