كيفية استخدام أمر Wget في لينكس مع أمثلة

في هذا المقال، سنستعرض أداة wget التي تقوم بإحضار الملفات من شبكة الويب العالمية (WWW) باستخدام بروتوكولات شائعة مثل HTTP، HTTPS، FTP، و FTPS.

Wget هي أداة سطر أوامر مجانية و منزل الملفات الشبكية، التي تأتي مع العديد من الميزات التي تجعل تنزيل الملفات سهلاً، بما في ذلك:

  • تنزيل ملفات كبيرة أو تحريز مواقع الويب أو FTP بالكامل.
  • تنزيل ملفات متعددة في وقت واحد.
  • تحديد عرض النطاق الترددي والحد الأقصى للسرعة للتنزيلات.
  • تنزيل الملفات عبر الوكلاء.
  • يمكن استئناف التنزيلات المتوقفة.
  • تكرار مرايا الدلائل بشكل تكراري.
  • يعمل على معظم أنظمة التشغيل شبيهة بيونكس بالإضافة إلى ويندوز.
  • عمل غير مراقب / في الخلفية.
  • دعم لاتصالات HTTP المستمرة.
  • دعم لـ SSL/TLS للتنزيلات المشفرة باستخدام مكتبة OpenSSL أو GnuTLS.
  • دعم لتنزيلات IPv4 و IPv6.

بناء جملة الأمر Wget

الصيغة الأساسية لـ Wget هي:

$ wget [option] [URL]

أولاً، تحقق مما إذا كانت أداة wget مثبتة بالفعل أم لا في صندوق Linux الخاص بك، باستخدام الأمر التالي.

$ rpm -q wget         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ dpkg -l | grep wget [On Debian, Ubuntu and Mint]

تثبيت Wget على Linux

إذا لم يكن Wget مثبتًا، يمكنك تثبيته باستخدام مدير الحزم الافتراضي في نظام Linux الخاص بك كما هو موضح.

$ 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 المستخدم هنا هو لمنع استدعاءات التأكيد قبل تثبيت أي حزمة. لمزيد من أمثلة الأوامر والخيارات YUM و APT اقرأ مقالاتنا عن:

1. تنزيل ملف بواسطة 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]

2. تنزيل ملف بواسطة 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]

3. تنزيل ملفات متعددة بواسطة 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]

٤. تحميل ملفات متعددة باستخدام Wget من ملف

لتحميل ملفات متعددة في وقت واحد، استخدم الخيار -i مع موقع الملف الذي يحتوي على قائمة من عناوين الويب التي يجب تحميلها. يجب إضافة كل عنوان ويب في سطر منفصل كما هو موضح.

على سبيل المثال، يحتوي ملف ‘download-linux.txt‘ على قائمة من عناوين الويب التي يجب تحميلها.

# 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
...

إذا كانت قائمة عناوين الويب لديك تتبع نمطًا معينًا للترقيم، يمكنك إضافة أقواس متعرجة لاستخراج جميع العناوين التي تطابق النمط. على سبيل المثال، إذا كنت ترغب في تحميل سلسلة من نوى لينكس تبدأ من الإصدار 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

في حالة تحميل ملف كبير، قد يحدث أحيانًا أن يتوقف التحميل، في هذه الحالة يمكننا استئناف تنزيل نفس الملف من حيث توقف بوجود الخيار -c.

ولكن عندما تبدأ في تنزيل الملفات دون تحديد الخيار -c، سيقوم wget بإضافة امتداد .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

لتنزيل أو عكس أو نسخ موقع إلكتروني بأكمله للمشاهدة في وضع لا إتصال بالإنترنت، يمكنك استخدام الأمر التالي الذي سيجعل نسخة على الجهاز المحلي للموقع بالإضافة إلى جميع المواد الخاصة (جافا سكريبت، 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

7. تنزيل 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’.

8. Wget تحديد حدود سرعة تنزيل الملفات

باستخدام الخيار --limit-rate=100k، يتم تقييد سرعة التنزيل إلى 100 كيلوبايت وسيتم إنشاء السجلات تحت 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
...

9. 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

10. تجاهل فحص شهادة SSL في Wget

لتجاهل فحص شهادة 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’
...

11. نسخة ومساعدة Wget

باستخدام الخيارات --version و --help يمكنك عرض النسخة والمساعدة حسب الحاجة.

$ wget --version
$ wget --help

في هذا المقال، قمنا بتغطية أوامر Wget على Linux مع الخيارات للمهام الإدارية اليومية. هل ترغب في معرفة المزيد؟ يرجى الاطلاع على man wget، وشاركنا رأيك من خلال صندوق التعليقات أو إذا كنا قد تغاضينا عن شيء، فلتخبرنا.

Source:
https://www.tecmint.com/10-wget-command-examples-in-linux/