wget
فهرست
مقدمه
یکی از ابزار های پر استفاده در دانلود فایل است، سال هاست که دانلود منیجر های گرافیکی و پیشرفته وجود دارند اما با اینحال به این دلیل که wget گزینه های پیشرفته ای دارد، هنوز هم بسیار کاربردی و مفید است. wget جز اینکه برای دانلود فایل استفاده میشود، برای دانلود یا میرور کردن یک سایت هم استفاده میشود.
دانلود فایل
wget "file_link"
برای دانلود چندین فایل به صورت همزمان کافیه لینک ها را با یک فاصله از هم جدا کنید
wget "link1" "link2" "link3"
دانلود فایل و ذخیره آن با یک اسم متفاوت
‐‐output-document filename.html example.com
دانلود فایل و ذخیره آن در یک دایرکتوری مشخص
‐‐directory-prefix=folder/subfolder example.com
دانلود لیستی از فایل های متوالی
گاهی در سرور ها فایل ها را بر اساس ورژن یا تاریخ، در نامشان عدد های متوالی قرار میدهند. برای مثال ممکن است 10 عدد عکس در یک سرور داشته باشیم. که از 1 تا 10 شماره گذاری شده اند، حال برای دانلود این 10 عدد عکس، به این صورت عمل میکنیم.
wget http://example.com/images/{1..20}.jpg
نمایش/عدم نمایش خروجی
زمانی که به یک سرور متصل میشوید اتفاقات زیادی رخ میدهد ازجمله error ها و http status code ها برای دیدن این اطلاعات باید برنامه را در مود verbose قرار داد.
-v, --verbose
و اگر این اطلاعات نیاز نباشد، چون wget به صورت پیشفرض در این حالت قرار دارد، برای خلاص شدن از دیدن این اطلاعات کافیه برنامه زا از حالت پر حرف منع کرد
-nv, --no-verbose
-q, --quiet
اگر نیاز به ذخیره این اطلاعات داشتید باید از سوییچ
-o FileName.log
استفاده کنید
نوعی دیگر از خروجی هم وجود دارد که اطلاعات بیشتری را نمایش میدهد
-d, --debug
خواندن لینک ها از فایل داخلی یا از اینترنت
گاهی تعداد لینک ها بیش از تعدادی میشود که بشود در ترمینال به نرم افزار داد. یا ممکن است لینک های دانلود در یک صفحه html باشند.
برای اینکه یک فهرست از لینک ها را به صورت یکجا دانلود کنیم، باید از آپشن
-i "./songs.txt"
--input-file "https://example.com/2077/series/ControlPlustShift/s1/"
استفاده کنیم، مقدار این آپشن میتواند یک لینک از یک صفحه یا آدرس یک فایل متنی در سیستم شما باشد. که در هر صورت wget تمامی لینک ها را خط به خط به تریب از خط اول دانلود خواهد کرد.
ادامه دانلود متوقف شده یا شکست خورده
به هر دلیلی ممکن است دانلود شکست بخوره، مثل قطعی موقت اینترنت یا داون شدن سرور یا ممکن است که
شما دانلود را متوقف کنید.
برای اینکه دانلود قبلی را ادامه دهید، در همان پوشه ای که فایل نیمه دانلود شده شما قرار دارد، دستور
wget
و لینک فایل را مجدد وارد کنید اما با این تفاوت که شما باید از سوییچ
-c
استفاده کنید
wget -c "last-link"
wget --continue "last-link"
تلاش مجدد
اگر wget در دانلود فایل شکت بخورد، باز هم دست از تلاش بر نخواهد داشت و بینهایت بار تلاش برای دانلود را ادامه خواهد داد. اما برای مشخص کردن تعداد تلاش دانلود باید از سوییچ
-t, --tries
استفاده کرد. اما اگر کانکشن شما به اینترنت قطع شود wget دانلود را ادامه نخواهد داد. برای اینکه در این موقعیت هم تلاش برای دانلود متوقف نشود باید با از این سوییچ استفاده کرد
--retry-connrefused
ارور های مختلفی وجود دارد که ممکن است هنگام دانلود رخ دهد. مثل 404 که زمانی رخ میدهد که لینک به محتوایی اشاره کند که وجود ندارد. یا 429 که در مواقعی رخ میدهد که شما درخواست های مکرری به سرور سایت داشتید. و یا 503 که در زمانی رخ میدهد که سرور مشغول باشد و توان پردازش درخواست شما را نداشته باشد. برای مشخص کردن اینکه فقط در زمان وقوع چه ارور هایی تلاش برای دانلود مجدد انجام شود، از این سوییچ استفاده میشود. توجه داشته باشید که مقدار این سوییچ یک لیست از کد های ارور است که با علامت کاما از هم جدا میشوند
--retry-on-http-error=ERRORS
برای اینکه بین هر تلاش مجدد یک وقفه زمانی قرار دهیم از سوییچ
--waitretry
استفاده میکنیم، زمان بر اساس ثانیه است.
--waitretry
وقفه
برای وقفه گذاشتن بین دانلود ها دو سوییچ داریم. وقفه تصادفی و وقفه طبق زمان مشخص.
وقفه با زمان مشخص. به صورت پیش فرض زمانی که شما مشخص میکنید ثانیه است اما با استفاده از پسوند میتوان زمان را به دقیقه، ساعت، و روز تغییر داد.
m دقیقه
h ساعت
d روز
-w 5
--wait 1m
وقفه با زمان رندم ممکن است امکان بن شدن شما را کمتر کند. درواقع اگر شما دارید بیشتر از یک فایل را دانلود میکنید یا تعداد کانکشن زیادی به یک سایت دارید، باید از وقفه استفاده کنید. اگر این وفقه ها زمانی مشخص باشند، ممکن است سایت فعالیت مشکوکی را تشخیص دهد، برای همین بهتر است از وقفه تصادفی استفاده کنید.
--random-wait
محدود کردن پهنای باند
مواقعی نیاز میشود که سرعت دانلود را تا حدی کاهش دهیم، برای مثال زمانی که دیگر افراد میخواهند از شبکه استفاده کنند و ما نباید با مصرف تمامی پهنای باند مزاحم آنها نشویم. پهنای باند به صورت پیش فرض به بایت تنظیم میشود، اما میتوان به کیلوبایت و مگابایت هم تنظیم کرد.
- k کیلو بایت
- m مگابایت
--limit-rate 100k
به یاد داشته باشید که حتی میتوانید از عداد اشاری هم استفاده کنید.
--limit-rate 2.5k
محدود کردن ترافیک
زمانی که ترافیک قابل مصرف برای شما محدود شده باشد، نیاز پیدا میکنید که این محدودیت را برای مواقع دانلود هم به کار ببرید.
- k کیلو بایت
- m مگابایت
-Q 10k
--quota 1m
تنها این را به یاد داشته باشید که این محدودت برای یک فایل اعمال نمیشود و فقط زمانی اعمال میشود که شما چند فایل برای دانلود برای wget مشخص کرده اید، زمانی که فایل اول کاملا دانلود شد، wget میزان ترافیک را محاسبه میکند، اگر بیشتر یا مساوی با محدودیت تعیین شده باشد دانلود را متوقف میکند. اگر کمتر باشد دانلود فایل بعدی را ادامه میدهد و تا زمانی که دانلود فایل بعدی را تمام نکرده است، محدودیت را محاسبه نمیکند.
دانلود در پس زمینه
زمانی که شما wget را اجرا میکنید تا فایلی دانلود کند، فرایند دانلود ترمینال را از شما خواهد گرفت و شما دیگر قادر به اجرای کامند های جدید نخواهید داشت. برای اینکه فرایند دانلود به در پس زمینه اجرا شود دو راه وجود دارد. راه اول استفاده از سوییچ و راه دوم فرستادن پروسه به بکگراند با استفاده از قابلیت bash
اگر شما از سوییچ استفاده کنید، wget برای هر بسته دریافتی یک لاگ هم ذخیره خواهد کرد. در نظر داشته باشید که اگر حتی ترمینال هم بسته شود wget باز هم به دانلود ادامه خواهد داد.
-b, --background
و راه دوم استفاده از علامت
&
است.
به این صورت
wget -i links.txt &
دو تفاوت در این روش وجود دارد.
اگر ترمینال را ببندید wget هم بسته خواهد شد.
لاگ های این روش کمتر است
گاهی شما میخواهید تا یک کپی افلاین از یک سایت داشته باشید برای زمانی که دسترسی به اینترنت ندارید آن را باز هم مشاهده کنید. برای اینکار سوییچ های زیاد وجود دارد که باید هر کدام را بدانید و بر اساس نیازتان از انها ستفاده کنید/نکنید.
- دانلود به صورت بازگشتی
اگر لینکی در صفحه وجود داشته باشد که مارا به صفحه ای دیگر هدایت کند این سوییچ مشخص میکند که باید آن را دنبال کند.
-r, --recursive
- عمق پیشرفت در لینک
در یک سایت ممکن است لینک های زیادی وجود داشته باشد و هر پیج هم باز شامل کلی لینک باشد.
برای جلو گیری از اینکه
wget
تمامی لینک ها را دنبال نکند. درواقع برای اینکه اگر در پیج یک لینک، لینک دیگری وجود داشت و باز هم این روند ادامه داشت،
wget
را از دنبال کردن لینک های هر پیج منع کنیم. باید از سوییچ
-l
استفاده کنیم. به صورت پیش فرض عمق 5 است. برای تغییر به بینهایت باید عدد 0 استفاده کرد.
-l, --level
هر دو گزینه بالا برای اینکه یک سایت را میرور کنید به یک سوییچ کوتاه شده اند.
--mirror
این سوییچ، دانلود بازگشتی را فعال و عمق را بینهایت میکند.
وقتی سایت شما دانلود شد. شما برای دسترسی به سایت فرضا index.html دانلود شده را باز میکنید. این فایل از روی سیستم لوکال شما باز میشود. اما وقتی روی لینک ها، فایل ها و صفحه هایی که لینک شده اند بزنید، هیچ کدام از انها از فایل ها لوکال باز نخواهند شد. و از اینترنت خوانده خواهند شد. برای اینکه فایل ها و صفحه ها به فایل های لوکال دانلود شده لینک شوند باید از سوییچ تبدیل لینک استفاده کنید.
--convert-links
هر صفحه سایت کلی فایل css و js دارد که صفحه سایت را مناسب و قابل خواندن کند. برای اینکه این فایل های مهم دانلود شود از سوییچ
--page-requisites
استفاده کنید.
و در آخر خلاصه همه دستورات برای میرور کردن سایت.
wget -mkp
تنطیم کردن پروکسی
برای اینکه داده هایمان را از یک پروکسی دریافت کنیم wget میتواند از پروکسی http و https پشتیبانی کند. این کار داده هایی که از سرور ftp و هم سرور http میگیرید را از طریق پروکسی دریافت میکند. برای تنظیم کردن باید از متغییر های محیطی یا environment variable ها استفاده کنید. دو متغییر https_proxy و http_proxy را به آدرس پروکسی سرور تنظیم کنید. برای مثال
export http_proxy=http://127.0.0.1:8000
export https_proxy=$http_proxy
و فقط در زمان استفاده از wget باید سوییچ استفاده از پروکسی را فعال کنید
--proxy
دانلود فایل با پسونده مشخص
اگر نیاز بود که فایل هایی با پسوند های مشخصی رو دانلود کنید مثلا فقط mp3 یا mp4 باید چند سوییچ رو باهم استفاده کنید تا مشکلی پیش نیاد و در نهایت از سوییچ اصلی اصلی استفاده کنید.
wget ‐‐level=1 ‐‐recursive ‐‐no-parent ‐‐accept mp3,MP3 http://example.com/mp3/
--no-parent
برای این استفاده میشود که wget به پوشه قبلی این دایرکتوری مراجعه نکنه.
--accept
برای این است که در یک لیست که با کاما اجزایش از هم جدا میشوند، مشخص کنیم فقط فایل هایی با پسوند هایی که در لیست مشخص کردیم را دانلود کن، و دیگر فایل ها را چشم پوشی کن.
نکته ها
- حتما لینک ها در کوتیشن قرار بدید، وگرنه ممکن است که بش کاراکتر های لینک را به عنوان وایلدکارد در نظر بگیرد
- اگر پروسه ها را در بکگراند اجرا میکنید و نیاز است لاگ را همزمان ببینید، کافیست به این روش عمل کنید
tail -F wget-log
Author or Authors
- arya shabane m.mohamadshabane@gmail.com