איך להשתמש בפקודת Wget ב־Linux עם דוגמאות

wget הוא כלי המבוסס על שורת פקודה המאפשר לך לקבל קבצים מהאינטרנט הרחב (World Wide Web) באמצעות פרוטוקולים נפוצים כמו HTTP, HTTPS, FTP, ו־FTPS.

Wget הוא כלי בחינם לשימוש בשורת הפקודה ו־הורדת קבצים מרשת, שמגיע עם מספר תכונות המקלות על הורדת קבצים, כולל:

  • הורדת קבצים גדולים או מראה של אתרי אינטרנט או FTP שלמים.
  • הורדת מספר קבצים בבת אחת.
  • הגדרת רוחב פס ומגבלת מהירות להורדות.
  • הורדת קבצים דרך פרוקסי.
  • אפשרות להמשך הורדות שנותקו.
  • מראה ספריות באופן רקורסיבי.
  • רץ על רוב מערכות ההפעלה שדומות ל־UNIX וגם Windows.
  • פעולה לא מאובטחת / רקעית.
  • תמיכה בחיבורי 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 לא מותקן, תוכל להתקין אותו באמצעות מנהל החבילות הברירתי של המערכת שלך לינוקס, כפי שמוצג.

$ 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]

4. הורדת מספר קבצים באמצעות Wget מקובץ

כדי להוריד מספר קבצים בבת אחת, השתמש באפשרות -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

5. המשך הורדת הורדה שלא הושלמה באמצעות 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 ^

6. מראה של כל האתר באמצעות Wget

כדי להוריד או לשמור או להעתיק את כל האתר לצפייה בלתי מקוונת, אפשר להשתמש בפקודה הבאה שתעשה העתקה מקומית של האתר יחד עם כל הנתונים (JavaScript, 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, מהירות ההורדה מוגבלת ל-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
...

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/