
آموزش کاربردی نصب و استفاده از دستور wget در لینوکس
ویژگی های متنوع Wget سبب شد که ما تصمیم بگیریم مقاله ای را برای آموزش نصب و استفاده از Wget در لینوکس اختصاص دهیم. احتمالا شما هم می پرسید مگر Wget چه ویژگی هایی دارد؟
Wget ابزار رایگان خط فرمان و در حقیقت یکdownloader network غیرتعاملی CLI است که از پروتکل هایی مانند HTTP، HTTPS، FTP و FTPS استفاده می کند و بسته های شما را از شبکه جهانی (WWW) دانلود می کند و نگهداری می کند تا شما بتوانید نصب و نگهداری آن ها را انجام دهید.
Wget ویژگی های زیادی دارد که امکان دانلود فایل را برای شما آسان می کند؛ برای مثال:
- امکان دانلود فایل های حجیم
- امکان دانلود فایل ها به صورت همزمان
- تنظیم پهنای باند و محدودیت سرعت برای دانلود ها
- استفاده از پروکسی برای دانلود فایل ها
- امکان از سرگیری مجدد دانلودهای متوقف شده
- اجرا شدن در سیستم عامل های مشابه یونیکس و ویندوز
- پشتیبانی کردن از HTTP به صورت مداوم
- پشتیبانی از SSL/TLS برای دانلودهای رمزگذاری شده با استفاده از کتابخانه OpenSSL یا GnuTLS.
- پشتیبانی از دانلودهای IPv4 و IPv6.
اگر شما هم دوست دارید تا از Wget استفاده کنید، آموزش کاربردی نصب و استفاده از دستور wget در لینوکس را همراه با ما اجرا کنید، اما پیش از آن که ادامه مقاله را مطالعه کنید، یک سرور مجازی لینوکس با سرعت و کیفیت بالا را از سایت آسام سرور خریداری کنید تا بتوانید به خوبی از این ابزار استفاده کنید. برای این کار می توانید به صفحه خرید سرور مجازی لینوکس (Linux VPS) سر بزنید.
سینتکس اصلی Wget
$ wget [option] [URL]
قبل از آن که گام بعدی را اجرا کنید، این اطمینان را حاصل کنید که ابزار wget از پیش در لینوکس شما نصب شده باشد. برای آن که متوجه شوید wget قبلا نصب شده است یا خیر، از کد زیر استفاده کنید:
$ rpm -q wget [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ dpkg -l | grep wget [On Debian, Ubuntu and Mint]
نصب Wget در لینوکس
پس از آن که مطمئن شدید که Wget قبلا نصب نشده است، می توانید از مدیریت بسته پیش فرض استفاده کنید و آن را نصب کنید:
$ sudo apt install wget -y [On Debian, Ubuntu and Mint]
$ sudo yum install wget -y [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]$ sudo emerge -a net-misc/wget [On Gentoo Linux]
$ sudo pacman -Sy wget [On Arch Linux]
$ sudo zypper install wget [On OpenSUSE]
گزینه -y که در اینجا استفاده می شود برای جلوگیری از درخواست های تایید قبل از نصب هر بسته ای است.
نحوه استفاده از دستور Wget
یک فایل با Wget دانلود کنید
این دستور یک فایل را دانلود کرده و آن را در دایرکتوری فعلی ذخیره می کند. همچنین پیشرفت دانلود، اندازه، تاریخ و زمان را در حین دانلود نشان می دهد.
# wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
--2021-12-10 04:15:16-- http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3565643 (3.4M) [application/x-gzip]
Saving to: ‘wget2-2.0.0.tar.gz’ wget2-2.0.0.tar.gz 100%[==========>] 3.40M 2.31MB/s in 1.5s
2021-12-10 04:15:18 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]
استفاده از Wget برای دانلود فایل با نام های مختلف
با استفاده از گزینه -O (با حروف بزرگ)، فایل هایی با نام های مختلف فایل دانلود می شود. در اینجا ما نام فایل wget.zip را مطابق شکل زیر داده ایم.
# wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
--2021-12-10 04:20:19-- http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.HTTP request sent, awaiting response... 200 OK
Length: 446966 (436K) [application/x-gzip]
Saving to: ‘wget.zip’ wget.zip
100%[===================>] 436.49K 510KB/s in 0.9s
2021-12-10 04:20:21 (510 KB/s) - ‘wget.zip’ saved [446966/446966]
با Wget چندین فایل را با پروتکل HTTP و FTP بارگیری کنید
در اینجا می بینیم که چگونه می توان چندین فایل را با استفاده از پروتکل HTTP و FTP با دستور wget به طور همزمان دانلود کرد.
$ wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
ftp://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz.sig
--2021-12-10 06:45:17-- http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz
Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b
Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected.HTTP request sent, awaiting response... 200 OK
Length: 3565643 (3.4M) [application/x-gzip] Saving to: ‘wget2-2.0.0.tar.gz’ wget2-2.0.0.tar.gz 100%[==========>] 4.40M 4.31MB/s in 1.1s
2021-12-10 06:46:10 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]
دانلود چند فایل از یک فایل به صورت همزمان
برای دانلود چند فایل به صورت همزمان، از گزینه -i با محل فایلی که حاوی لیست URL هایی است که باید دانلود شود استفاده کنید. همانطور که نشان داده شده است، هر URL باید در یک خط جداگانه اضافه شود.
به عنوان مثال، فایل زیر فایل “download-linux.txt” حاوی لیست URL هایی است که باید دانلود شوند.
# cat download-linux.txt
https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.5-x86_64-dvd1.iso
https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.2.0-amd64-DVD-1.iso
# wget -i download-linux.txt
--2021-12-10 04:52:40-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.88.247,91.189.91.124, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3071934464 (2.9G) [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’ ubuntu-20.04.3-desktop-amd64 4%[=> ] 137.71M 11.2MB/s eta 3m 30s...
اگر لیست URL شما دارای الگوی شماره گذاری خاصی است، می توانید بریس های فرفری اضافه کنید تا همه URL های مطابق با الگو را واکشی کنید. به عنوان مثال، اگر می خواهید یک سری از هسته های لینوکس را از نسخه 5.1.1 تا 5.1.15 دانلود کنید، می توانید موارد زیر را انجام دهید.
$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.{1..15}.tar.gz
--2021-12-10 05:46:59-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1
Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated.
The certificate has not yet been activated
HTTP request sent, awaiting response... 200 OK
Length: 164113671 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.1.tar.gz’
linux-5.1.1.tar.gz 100%[===========>] 156.51M 2.59MB/s in 61s
2021-12-10 05:48:01 (2.57 MB/s) - ‘linux-5.1.1.tar.gz’ saved [164113671/164113671]
--2021-12-10 05:48:01-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.2.tar.gz
Reusing existing connection to mirrors.edge.kernel.org:443.
HTTP request sent, awaiting response... 200 OK
Length: 164110470 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.2.tar.gz’
linux-5.1.2.tar.gz 19%[===========] 30.57M 2.58MB/s eta 50s
دانلود یک فایل و ذخیره در دایرکتوری مشخص به کمک دستور wget
برای آن که بتوانیم در لینوکس یک فایل را دانلود کنیم و آن را در دایرکتوری دلخواهمان ذخیره کنیم، باید از –P استفاده کنیم. مثلا اگر بخواهید فایلی را داخل دایرکتوری /opt/wordpress ذخیره کنید، می توانید از دستور زیر استفاده کنید
wget -P /opt/wordpress https://wordpress.org/latest.zip #
دانلود مجدد دانلودهای ناتمام با دستور Wget
در صورت دانلود فایل هایی که حجم بالایی دارند، ممکن است گاهی اوقات این اتفاق بیفتد که دانلود متوقف شود، در این صورت میتوانیم دانلود همان فایلی را که در آنجا متوقف شده بود با گزینه -c از سر بگیریم.
اما وقتی شروع به دانلود فایل ها بدون تعیین -c می کنید، گزینه wget پسوند 0.1 را در انتهای فایل اضافه می کند که به عنوان یک دانلود جدید در نظر گرفته می شود. بنابراین، اضافه کردن سوئیچ -c هنگام دانلود فایلهای بزرگ تمرین خوبی است.
# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
--2021-12-10 05:27:59-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.247, 91.189.91.123, 91.189.91.124, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.247|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 3071934464 (2.9G), 2922987520 (2.7G) remaining [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’
ubuntu-20.04.3-desktop-amd64.iso 5%[++++++> ] 167.93M 11.1MB/s
^C
[root@tecmint ~]# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
--2021-12-10 05:28:03-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.91.124, 91.189.91.123, ...
Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected.
HTTP request sent, awaiting response... 206 Partial Content
Length: 3071934464 (2.9G), 2894266368 (2.7G) remaining [application/x-iso9660-image]
Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’
ubuntu-20.04.3-desktop-amd64.iso 10%[+++++++=====> ] 296.32M 17.2MB/s eta
2m 49s ^
Wget Mirror تمام وب سایت
برای دانلود یا کپی کردن کل یک وب سایت برای مشاهده آفلاین، می توانید از دستور زیر استفاده کنید که یک کپی از وب سایت همراه با تمام المان ها (جاوا اسکریپت، CSS، تصاویر) ایجاد می کند.
$ wget --recursive --page-requisites --adjust-extension --span-hosts --convert-links
--restrict-file-names=windows --domains yoursite.com --no-parent yoursite.com
توضیح دستور بالا
wget \
--recursive \ # Download the whole site.
--page-requisites \ # Get all assets/elements (CSS/JS/images).
--adjust-extension \ # Save files with .html on the end.
--span-hosts \ # Include necessary assets from offsite as well.
--convert-links \ # Update links to still work in the static version.
--restrict-file-names=windows \ # Modify filenames to work in Windows as well.
--domains yoursite.com \ # Do not follow links outside this domain.
--no-parent \ # Don't follow links outside the directory you pass in.
yoursite.com/whatever/path # The URL to download
دانلود فایل ها در پس زمینه با استفاده از Wget
با گزینه-b
می توانید بلافاصله پس از شروع دانلود و نوشتن گزارش ها در فایل wget.log، دانلود را در پس زمینه ارسال کنید.
$ wget -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Continuing in background, pid 8999.
Output will be written to ‘wget.log’.
محدودیت سرعت دانلود فایل Wget Set
با گزینه –limit-rate=100k، محدودیت سرعت دانلود به 100k محدود می شود و گزارش ها مطابق شکل زیر در wget.log ایجاد می شوند.
$ wget -c --limit-rate=100k -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso
Continuing in background, pid 9108.
Output will be written to ‘wget-log’.
فایل wget.log را ببینید و سرعت دانلود wget را بررسی کنید.
$ tail -f wget-log
5600K .......... .......... .......... .......... .......... 0% 104K 8h19m
5650K .......... .......... .......... .......... .......... 0% 103K 8h19m
5700K .......... .......... .......... .......... .......... 0% 105K 8h19m
5750K .......... .......... .......... .......... .......... 0% 104K 8h18m
5800K .......... .......... .......... .......... .......... 0% 104K 8h18m
5850K .......... .......... .......... .......... .......... 0% 105K 8h18m
5900K .......... .......... .......... .......... .......... 0% 103K 8h18m
5950K .......... .......... .......... .......... .......... 0% 105K 8h18m
6000K .......... .......... .......... .......... .......... 0% 69.0K 8h20m
6050K .......... .......... .......... .......... .......... 0% 106K 8h19m
6100K .......... .......... .......... .......... .......... 0% 98.5K 8h20m
6150K .......... .......... .......... .......... .......... 0% 110K 8h19m
6200K .......... .......... .......... .......... .......... 0% 104K 8h19m
6250K .......... .......... .......... .......... .......... 0% 104K 8h19m
...
Wget دانلود فایل های محافظت شده با رمز عبور از طریق FTP و HTTP
برای دانلود یک فایل از یک سرور FTP محافظت شده با رمز عبور، می توانید از گزینه های--ftp-user=username
و--ftp-password=password
استفاده کنید.
$ wget --ftp-user=narad --ftp-password=password ftp://ftp.example.com/filename.tar.gz
برای دانلود یک فایل از یک سرور HTTP محافظت شده با رمز عبور، می توانید از گزینه های--http-user=username
و--http-password=password
مطابق شکل استفاده کنید.
$ wget --http-user=narad --http-password=password http://http.example.com/filename.tar.gz
نادیده گرفتن بررسی گواهی SSL
برای نادیده گرفتن بررسی گواهی SSL هنگام دانلود فایل ها از طریق HTTPS، می توانید از گزینه--no-check-certificate
استفاده کنید:
$ wget --no-check-certificate
https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
--2021-12-10 06:21:21-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz
Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1
Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted.
WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated.The certificate has not yet been activated
HTTP request sent, awaiting response... 200 OK
Length: 164113671 (157M) [application/x-gzip]
Saving to: ‘linux-5.1.1.tar.gz’...
نسخه Wget و راهنما
با گزینه های –version و –help می توانید نسخه را مشاهده کرده و در صورت نیاز کمک کنید.
$ wget --version$ wget --help
12. تلاش برای اتصال به اینترنت در پی قطع شدن آن به کمک دستور wget
اگر شما هم با مشکل قطع شدن پی در پی اینترنت مواجه هستید و قصد دارید فایلی را دانلود کنید، در این صورت برای آن که تلاش ها را برای دانلود کردن مجدد فایل ها را افزایش دهید، می توانید از دستور زیر استفاده کنید:
wget -tries=100 https://example.com/file.zip #
عدد 100 در این دستور به این معناست که در صورت قطع شدن اینترنت، حداکثر 100 بار تلاش برای ادامه دانلود انجام می شود.
13. پیدا کردن لینک های شکسته با دستور Wgetبه کمک دستور wget
دستور زیر به شما کمک می کند تا بتوانید لینک های شکسته را پیدا کنید.
wget -o wget.log -r -l 10 --spider http://example.com
سخن آخر
در این مقاله دستورات wget لینوکس را با گزینه هایی با کاربردهای رایج آموزش دادیم. در صورتی که سوالی در این زمینه دارید، می توانید با ما در قسمت نظرات به اشتراک بگذارید.
سوالات متداول:
آیا wget از HTTP پشتیبانی می کند؟
بله پشتیبانی کردن از HTTP به صورت مداوم از ویژگی های Wget است.