معرفی کامند دانلود(wget) در لینوکس و تمامی آپشن‎های آن

3 540
امتیاز به مطلب
[تعداد: 2   میانگین: 5/5]

معرفی کامند wget و چگونگی دانلود فایل در لینوکس با استفاده از wget

در این مقاله قصد داریم کاملترین راهنمای استفاده از کامند wget را با شما به اشتراک بگذاریم، پس از خواندن این مطلب و یا مراجعه به آن در زمان نیاز شما میتوانید تمامی نیازهای خود برای استفاده از این کامند را در این مقاله بیابید.

wget یک ابزار رایگان برای دانلود فایل در لینوکس است که از پروتکل‎های https،http و ftp جهت دریافت فایل پشتیبانی میکند. نام این کامند برگرفته از جمله “World Wide Web + get” است. wget امکانات زیادی برای دانلود فایل‎های حجیم، ادامه دادن فرایند دانلود، دانلود هم‎زمان چندین فایل، دانلود تو‎در‎تو، دانلود کامل یک صفحه وب (mirroring entire web) و دانلود از FTP سرورها را به ساده‎ترین روش در اختیار شما قرار می‎دهد.

wget یک کامند غیر‎تعاملی(non-interactive) بوده که بسیار انعطاف‎پذیر است . شما به راحتی میتوانید از wget داخل یک اسکریپت استفاده کنید، در cron job استفاده کنید و wget میتواند در بک‎گراند اجرا شود که این امکان را در اختیار شما قرار میدهد تا در زمان خارج شدن از سیستم نیز پروسه دانلود خود را ادامه دهید.

در این مقاله ما از طریق چند مثال عملی کلیه کارایی‎های مهم wget را می‎آموزیم و امیدوارم این مقاله یک مرجع خوب برای رفع تمامی نیاز‎های شما در زمان استفاده از wget باشد.

نصب wget در Centos/Ubuntu/Debian/Fedora

ابزار wget در اکثر توزیع‎های لینوکس به صورت پیشفرض وجود دارد و نیاز به نصب ندارد اما در صورتی که در سیستم شما این کامند نصب نیست میتوانید با یکی از دستورات زیر بسته به توزیع مورد استفاده خود اقدام به نصب آن نمایید. لازم به ذکر است پکیج wget در ریپازیتوری اصلی اکثر توزیع‎ها وجود داشته و نیاز به نصب مخزن دیگری نخواهید داشت.

#ubuntu and debian
sudo apt-get install wget
#centos 5
sudo yum install wget
#centos 5/6
yum install wget
#fedora 28/27/26/25/24
sudo dnf install wget

دانلود یک فایل با wget

برای دانلود یک فایل در wget کافیست به این شکل wget https://wordpress.org/latest.zip در محیط شل ابتدا تایپ کنید wget و پس از یک فاصله آدرس url فایل مورد نظر را بنویسید که خروجی آن مشابه زیر خواهد بود.

--۲۰۱۹-۰۶-۱۷ ۱۱:۲۷:۱۱--  https://wordpress.org/latest.zip
Resolving wordpress.org (wordpress.org)... 198.143.164.252
Connecting to wordpress.org (wordpress.org)|198.143.164.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12119857 (12M) [application/zip]
Saving to: ‘latest.zip’

۱۰۰%[=========================================================================================>] 12,119,857  6.06MB/s   in 1.9s

۲۰۱۹-۰۶-۱۷ ۱۱:۲۷:۱۴ (۶٫۰۶ MB/s) - ‘latest.zip’ saved [12119857/12119857]

همانطور که می بینید، در خروجی نیز به شما پیشرفت دانلود، سرعت دانلود در حال حاضر، اندازه، تاریخ، زمان و نام فایل را نشان می دهد . در این مثال فایل مورد نظر در دایرکتوری فعلی که در آن هستید و با نام latest.zip ذخیره شده است.

از آنجایی که خروجی اکثر دستورات مشابه هم خواهد بود در ادامه برای کوتاه شدن متن تا زمان نیاز خروجی کامند را قرار نمیدهیم

دانلود یک فایل و ذخیره آن با نام دیگر

در برخی موارد لازم است فایل دانلود شده را با نام دیگری در سیستم یا سرور خود ذخیره کنید، در همین مثال میتوانیم بجای نام latest.zip از نام wordpress.zip برای ذخیره فایل استفاده کنیم که برای این منظور از نشانه -O پس از wget و نام مورد نظر بعد از آن و سپس آدرس url به شکل زیر استفاده کنیم.

wget -O wordpress.zip https://wordpress.org/latest.zip

در این مثال فایل با نام wordpress.zip و در دایرکتوری‎ای که در آن قرار دارید ذخیره خواهد شد، توجه داشته باشید که حرف O به صورت کپیتال(حروف بزرگ) باید استفاده شود.

دانلود فایل و ذخیره آن در مسیر(directory) مورد نظر

در دو مثال قبلی ما فایل را در دایرکتوری(مسیری) که در آن بودیم دانلود کردیم اما اگر نیاز داشته باشید فایل در مسیر دیگری دانلود و ذخیره شود از نشانه -P استفاده میکنیم همانند کامند زیر که ما اقدام به دانلود فایل در مسیر /var/www/html نموده‎ایم و فایل پس از دانلود در مسیر مورد نظر ما ذخیره خواهد شد .

wget -P /var/www/html/ https://wordpress.org/latest.zip

تنظیم سرعت دانلود فایل

در برخی موارد شما نیاز دارید برای دانلود فایل‎های حجیم محدودیت سرعت قرار دهید تا در حین دانلود تمام پهنای‎باند شما صرف دانلود نشود برای این منظور نیز wget امکان مشخص کردن حداکثر سرعت دانلود را با گزینه --limit-rate در اختیار شما قرار داده است با استفاده از این گزینه و مشخص کردن سرعت مورد نظر پس از علامت مساوی در مقابل آن، نهایت سرعت دانلود فایل از میزان مشخص شده توسط ما تجاوز نخواهد کرد. برای مثال در کامند زیر ما مشخص میکنیم که فایل با نهایت سرعت ۳۰۰ کیلوبایت در ثانیه دانلود شود .

wget --limit-rate=300k https://wordpress.org/latest.zip

ادامه دادن دانلود قطع شده

یکی از امکانات بسیار عالی wget که در این ابزار رایگان لینوکسی در اختیار ما قرار دارد، امکان ادامه دانلود از همانجایی که به هر دلیلی دانلود ما قطع شده است می‎باشد. مشابه این امکان را در نرم افزار‎های غیر رایگان ویندوزی مانند IDM مشاهده کرده‎ایم. اگر در حین دانلود به دلایل مختلف مانند قطعی ارتباط اینترنت یا از دسترس خارج شدن سرور و قطع ارتباط با ssh و … دانلود فایل شما ناقص ماند نگران نباشید چرا که پس از دسترسی مجدد می‎توانید با استفاده از نشانگر -c دانلود فایل را از همانجا که قطع شده است ادامه دهید و به این شکل در زمان و هزینه‎ها به شدت صرفه‎جویی کنید.

wget -c https://wordpress.org/latest.zip

نکته: اگر دانلود شما قطع شده باشد و شما بدون استفاده از نشانگر -c اقدام به دانلود مجدد نمایید wget در انتهای نام فایل ذخیره شه پس از دانلود “.۱” را اضافه خواهد کرد، همچنین توجه داشته باشید برای ادامه یافتن دانلود فایل حتما باید کامند را در مسیر قبلی اجرا کنید یا اگر با استفاده از گزینه‎های دیگر مسیر یا نام ذخیره فایل را تغییر داده اید مجدد باید از همان مسیر یا نام در کنار -c استفاده کنید.

دانلود فایل در بک‎گراند

اگر قصد دانلود یک یا چند فایل حجیم را داشته باشید قطعا منتظر ماندن برای اتمام پروسه دانلود کمی اذیت کننده است و همچنین در صورتی که شما در حال دانلود این فایل در یک سرور باشید که ارتباط شما با سرور از طریق ssh برقرار شده باشد ریسک قطع ارتباط نیز وجود دارد که در این صورت دانلود نیز متوقف خواهد شد، اما برای این موارد راه حلی بسیار هوشمندانه توسط ابزار wget ارائه شده است که شما با قرار دادن تنها یک نشانه -b همانند مثال زیر می‎توانید پروسه دانلود را به بک‎گراند سیستم بفرستید و بدون انتظار برای اتمام دانلود به ادامه کار خود بپردازید و یا حتی از سیستم یا سرور خارج شوید.

wget -b http://example.com/large-file.zip

با اجرای دستور بالا پروسه دانلود به شما نمایش داده نمی‎شود و برای مشاهده وضعیت دانلود در زمان نیاز و اطلاع از اینکه دانلود به اتمام رسیده یا ادامه دارد میتوانید در همان مسیری که کامند را اجرا کردید در فایل wget-log پروسه دانلود را بررسی کنید .

افزایش تعداد دفعات تلاش مجدد خودکار wget برای دانلود

اگر به علت مشکل ارتباطی اینترنت خودتان یا مشکلات موجود در سرور مقابل دانلود شما به دفعات قطع شده است و به دنبال راهی هستید که از تلاش مجدد به صورت دستی برای ادامه دانلود خلاص شوید باز هم wget برای شما یک سورپرایز آماده کرده است، شما با استفاده از آپشن --tries  می‎توانید مانند مثال زیر به سیستم بگویید در صورت قطع ارتباط، wget به تعداد n بار به صورت خودکار اقدام به تلاش مجدد برای ادامه دانلود فایل نماید.

wget --tries=200 https://example.com/large-file.zip

دانلود خودکار و در صف چندین فایل

اگر قصد دانلود چندین فایل مشخص را دارید می‎توانید هر n عدد url مورد نظر برای دانلود را در یک فایل txt و هر url را در یک خط ذخیره و به wget بگویید که آن‎ها را به ترتیب قرارگیری در فایل یک‎به‎یک و یکی پس از دیگری بدون اینکه لازم باشد شما کاری انجام دهید دانلود کند. برای این منظور ابتدا فایل را ایجاد و هر یک از url ها را در یک خط قرار می‎دهیم و سپس از نشانه -i و سپس نام فایل ایجاد شده همانند روبرو استفاده میکنیم wget -i download.txt

پیشنهاد میکنیم این مقاله را نیز بخوانید :

محتوای فایل download.txt باید مانند زیر باشد

http://example.com/file1.zip
http://example.com/file2.zip
http://example.com/file3.zip

دانلود از FTP با استفاده از wget

شما میتوانید از wget برای دانلود فایل از یک ftp سرور نیز استفاده کنید، حتی اگر ftp سرور شما با استفاده از نام‎کاربری و رمز‎عبور محافظت شده باشد نیز wget امکان دانلود از آن‎را به شکل مثال زیر برای شما فراهم می‎کند، در این کامند بجای youusername نام‎کاربری سرور ftp و بجای yourpassword رمز عبور سرور ftp را وارد کنید و همچنین توجه داشته باشید که باید در قسمت url-to-ftp-file حتما مسیر کامل فایل را قرار دهید.

wget --ftp-user=yourusername --ftp-password=yourpassword ftp://url-to-ftp-file

دانلود کامل یک وب‎سایت

اگر بخواهید یک صفحه از سایتی را دانلود و در آینده به صورت آفلاین مشاهده کنید، می‎توانید به سادگی از کامند زیر استفاده کنید.

wget --mirror --convert-links --page-requisites ----no-parent -P /path/to/download https://example-domain.com/article

توضیح گزینه‎های استفاده شده در کامند ذخیره سایت

–mirror : فعال کردن تمام گزینه‎های کامند mirror در wget

–convert-link : تبدیل تمام لینک‎ها برای اینکه بتوانید به صورت آفلاین آن‎ها را مرور کنید .

–page-requisites : دانلود تمام فایل‎های مورد نیاز مانند css,jpeg و …

–no-parent : با این گزینه دانلود را فقط به یک قسمت از سایت محدود میکنیم

-P : مسیر دانلود را مشخص میکنیم

دانلود تو‎در‎تو یک نوع فایل خاص مانند فایل zip از یک فایل‎سرور یا یک دایرکتوری فایل

شاید بخواهید در یک مسیر خاص از یک سایت یا یک فایل‎سرور تمامی فایل‎های آن با فرمت .zip را به صورت یکجا و بدون نیاز به وارد کردن تک به تک url های آن‎ها دانلود کنید برای این منظور از کامند زیر استفاده میکنیم.

wget --recursive --no-parent --level=1 --accept=zip http://example.com/download/

در کامند بالا در مسیر download در این فایل سرور تمامی فایل‎های با فرمت zip با عمق یک مسیر دانلود خواهند شد

توجه: منظور از عمق تعداد زیر مسیر‎هایی است که برای دانلود فایل با فرمت zip در کامند بالا توسط کامند wget پویش میشود برای مثال اگر فایلی در مسیر http://example.com/download/software نیز قرار داشته باشد دانلود خواهد شد

توضیح گزینه‎های استفاده شده در کامند دانلود تو‎در‎تو

–recursive : فعال کردن تمامی گزینه های دانلود تو‎در‎تو

–no-parent : با این گزینه دانلود را فقط به یک قسمت از سایت محدود میکنیم

–level : مشخص کردن تعداد (عمق) ورود به زیر مسیر‎ها – عدد ۰ برای نامحدود استفاده میشود

–accept : لیست نوع فایل‎های مدنظر برای دریافت – برای بیش از یک نوع فایل از علامت , و سپس نام اکستنشن مورد نظر استفاده کنید برای مثال zip,gzip,tar,tar.gz

بررسی وجود داشتن یک فایل – صحیح بودن url

اگر قصد دارید قبل از اجرای دستور دانلود بررسی کنید که آیا فایل مورد نظر در آدرس مورد نظر وجود دارد یا خیر wget این امکان را نیز فراهم کرده است که بدون دانلود فایل بررسی کنید که فایل وجود دارد یا خیر برای این منظور از دستور زیر استفاده میکنیم

wget --spider http://www.example.org/files/archive.zip

خروجی دستور فوق در صورتی که فایل مورد نظر وجود داشته باشد به شکل زیر خواهد بود

Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response... 200 OK
Length: 1206 (1.2K) [application/zip]
Remote file exists.

بررسی هدر دریافتی توسط wget

خیلی از مواقع شما نیاز به مشاهده هدر دریافتی از سرور مقابل دارید، اکثرا برای این مورد از curl استفاده میشود اما wget نیز این امکان را فراهم آورده است برای این منظور از دستور زیر استفاده میکنیم

wget -S --spider https://www.wordpress.com/

کامند بالا بدون اینکه فایلی را دانلود کند فقط هدر دریافتی را به شما نمایش میدهد که خروجی مشابه زیر خواهد بود

Spider mode enabled. Check if remote file exists.
--۲۰۱۹-۰۶-۱۹ ۱۵:۳۸:۴۷--  https://www.hosterpack.com/
Resolving www.hosterpack.com (www.hosterpack.com)... 185.227.138.230
Connecting to www.hosterpack.com (www.hosterpack.com)|185.227.138.230|:443... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Server: nginx
  Date: Wed, 19 Jun 2019 11:08:47 GMT
  Content-Type: text/html; charset=UTF-8
  Content-Length: 95258
  Connection: keep-alive
  X-Frame-Options: SAMEORIGIN
  Vary: Accept-Encoding,Cookie,User-Agent
  Last-Modified: Wed, 19 Jun 2019 10:40:10 GMT
  ETag: "1741a-58baada825862"
  Cache-Control: max-age=82, public, public, public
  Expires: Wed, 19 Jun 2019 11:10:10 GMT
  X-XSS-Protection: 1; mode=block
  X-Content-Type-Options: nosniff
  Referrer-Policy: no-referrer-when-downgrade
  Pragma: public
  Set-Cookie: _mcnc=1; Max-Age=2; Path=/
  X-Microcachable: 0
  Set-Cookie: uid=ueOK5l0KF79tVZ0SA8wbAg==; expires=Fri, 19-Jul-19 11:08:47 GMT; domain=$host; path=/
  P3P: policyref="/w3c/p3p.xml", CP="CUR ADM OUR NOR STA NID"
  Accept-Ranges: bytes
Cookie coming from www.hosterpack.com attempted to set domain to www.hosterpack.com
Length: 95258 (93K) [text/html]
Remote file exists and could contain further links,
but recursion is disabled -- not retrieving.

توقف دانلود پس از دانلود حجمی مشخص از فایل

با استفاده از کامند زیر فایل پس از دانلود ۵ مگابایت متوقف میشود و در آینده میتوانید با استفاده از گزینه -c که بالاتر توضیح دادیم ادامه دانلود را انجام دهید.

wget -Q5m http://www.example.org/files/archive.zip

در این مقاله سعی کردم تمامی کامند‎های کاربردی wget را برای شما شرح دهم، اگر کامندی را نیاز دارید که در بالا به آن اشاره نشده است از بخش نظرات همین صفحه اعلام کنید تا در همین مقاله گنجانده و یا در بخش نظرات کامند آن برای شما ارسال شود.

ممکن است شما دوست داشته باشید
3 دیدگاه
  1. پارسا می گوید

    دروود
    خیلی ممنون از مطلب خوبتون، من دوتا سوال داشتم
    با چه کامندی می تونم متوجه بشم که تو کدوم دایرکتوری در حال حاضر هستم ؟
    و اینکه با چه کامندی می تونم داخل دایرکتوری ها و فایل ها جستجو کنم ؟
    ممنون میشم راهنمایی کنید.

    1. مرتضی محمدی می گوید

      سلام
      خواهش میکنم، برای اینکه ببینید تو چه دایرکتوری قرار دارید از کامند pwd استفاده کنید برای جستجو میتونید از کامند find یا locate استفاده کنید که در آینده در این خصوص حتما یک مطلب جامع روی سایت میذارم

  2. مهدی می گوید

    احسنت

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

مشاوره در واتزاپ
1
نیاز به مشاوره دارید ؟
سلام 👋
چطور میتونم کمکتون کنم ؟