في هذا المقال، سنستعرض أداة 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 اقرأ مقالاتنا عن:
- 20 أمر YUM لإدارة الحزم في Linux
- 15 أمثلة لأمر APT في أوبونتو/ديبيان ومينت
- 45 أمر Zypper لإدارة لينكس OpenSUSE
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/