10 Παραδείγματα εντολών Wget (Linux File Downloader) στο Linux


Σε αυτό το άρθρο, θα εξετάσουμε το βοηθητικό πρόγραμμα wget που ανακτά αρχεία από το World Wide Web (WWW) χρησιμοποιώντας ευρέως χρησιμοποιούμενα πρωτόκολλα όπως το 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 δεν είναι εγκατεστημένο, μπορείτε να το εγκαταστήσετε χρησιμοποιώντας τον προεπιλεγμένο διαχειριστή πακέτων του συστήματος 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 εντολές Linux YUM για διαχείριση πακέτων
  • 15 Παραδείγματα εντολών APT σε Ubuntu/Debian & Mint
  • 45 Παραδείγματα εντολών Zypper για τη διαχείριση του OpenSUSE Linux

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 που ταιριάζουν με το μοτίβο. Για παράδειγμα, εάν θέλετε να κάνετε λήψη μιας σειράς πυρήνων Linux ξεκινώντας από την έκδοση 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
[ ~]# 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 Mirror

Για λήψη ή αντιγραφή ή αντιγραφή ολόκληρου ιστότοπου για προβολή εκτός σύνδεσης, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή που θα δημιουργήσει ένα τοπικό αντίγραφο του ιστότοπου μαζί με όλα τα στοιχεία (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 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
...

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. Έλεγχος πιστοποιητικού Wget Ignore 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’
...

11. Έκδοση Wget και Βοήθεια

Με τις επιλογές --έκδοση και --help μπορείτε να προβάλετε την έκδοση και τη βοήθεια όπως απαιτείται.

$ wget --version
$ wget --help

Σε αυτό το άρθρο, καλύψαμε τις εντολές wget του Linux με επιλογές για καθημερινές εργασίες διαχείρισης. man wget αν θέλετε να μάθετε περισσότερα σχετικά με αυτό; Παρακαλούμε κοινοποιήστε το μέσω του πλαισίου σχολίων μας ή εάν έχουμε χάσει κάτι, ενημερώστε μας.