شگفتی های دستور wget
شنبه, ۲۱ اسفند ۱۳۸۹، ۱۰:۳۱ ب.ظ
دستور wget یکی از مناسب ترین گزینه ها برای دانلود از اینترنت است،wget می تواند حالت هایی پیچیده از دانلود رو به زیبایی مدیریت کند،مثلا دانلود فایلهایی با حجم بالا،دانلود های بازگشتی،دانلود های غیر تعاملی،دانلود چندین فایل و غیره.در این مقاله میخواهم ۱۵ روش با مثال برای حالت های مختلف دانلود بیان کنم.
۱−دانلود یک فایل با wget
با مثال زیر می توانید یک فایل را از اینترنت و آدرس مورد نظرتون دانلود کرده و در دایرکتوری جاری ذخیره کنید.
هنگام دانلود:
به صورت پیشفرض،دستور wget نام کلمه ای که بعد از آخرین اسلش / قرار دارد را به عنوان اسم فایل قرار میدهد که شاید گاهی اوقات مناسب نباشد.
ناصحیح:به عنوان مثال ما فایلی با به صورت زیر دانلود و ذخیره کردیم:
download_script.php?src_id=7701
زمانیکه ما دستور wget رو اجرا میکنیم به صورت پیش فرض کل پهنای باندمون رو اشغال میکنه،شاید خیلی جاها این کار مناسب نباشه و مشکلاتی رو در پی داشته باشه،با این پیش فرض میتونیم سرعت دانلودمون رو لیمیت کنیم.
می تونید فایلی که در اوسط دانلود متوقف کردید را با استفاد از دستور زیر ادامه بدهید:
۵−دانلود در پس زمینه با wget -b
برای دانلود های بزرگ بهتره اونا رو تو پس زمینه قرار بدید :
بسیاری از سایت ها اجازه دانلود فایل رو زمانیکه رابط کاربریتون یک مرورگر نباشه رو نمیدهند،در این وضعیت میتونید رابط کاربریتون رو همانند مثال زیر تغییر بدهید:
زمانیکه شما میخواهید برای دانلودتان برنامه ریزی کنید باید از وجود لینک و آدرس های دانلودتان مطمئن باشید،برای این کار به صورت زیر عمل کنید:
اگر سرعت اینترنتتون پایینه و اگه حجم فایل دریافتی بالاست احتمال شکست در دانلود وجود دارد،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۲−دانلود و ذخیره کردن فایل با نامی دیگر با استفاده از wget -O
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 نام کلمه ای که بعد از آخرین اسلش / قرار دارد را به عنوان اسم فایل قرار میدهد که شاید گاهی اوقات مناسب نباشد.
ناصحیح:به عنوان مثال ما فایلی با به صورت زیر دانلود و ذخیره کردیم:
download_script.php?src_id=7701
wget http://www.vim.org/scripts/download_script.php?src_id=7701حتی اگر فایل دانلود شده در قالب زیپ هم باشد،به صورت زیر ذخیره و نمایش داده میشود:
lsصحیح:شکل صحیح قضیه به این شکل است که ما با کمک دستور wget -o این مشکل را حل کنیم:
download_script.php?src_id=7701
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با استفاده از دستور tail -f میتونید وضعیت دانلودتون رو مشاهده کنید:
Continuing in background, pid 1984.
Output will be written to `wget-log'
tail -f wget-log۶−پنهان کردن واسط کاربری و ارائه wget همانند یک مرورگر با استفاده از –user-agent
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="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۸− افزایش مقدار تلاش دوباره، برای دانلود یک فایل با wget –tries
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 404 Not Found
Remote file does not exist -- broken link!!!
اگر سرعت اینترنتتون پایینه و اگه حجم فایل دریافتی بالاست احتمال شکست در دانلود وجود دارد،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امیدوارم این مطلب به دردتون خورده باشه...
۸۹/۱۲/۲۱
ممنون