Herunterladen mehrerer Dateien aus einer Liste
In realen Szenarien müssen Sie oft mehrere Dateien herunterladen. Das manuelle Eingeben jedes wget
-Befehls wäre ineffizient. Glücklicherweise kann wget
mehrere Dateien aus einer Liste herunterladen, was sich perfekt für die Automatisierung eignet.
Erstellen einer Datei mit URLs
Zunächst erstellen wir eine Textdatei, die die URLs der Dateien enthält, die wir herunterladen möchten:
cd ~/project/download_resources
echo "https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz" > download_list.txt
echo "https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz" >> download_list.txt
echo "https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz" >> download_list.txt
In diesen Befehlen:
- Der erste
echo
-Befehl erstellt eine neue Datei namens download_list.txt
und fügt die erste URL hinzu
- Die folgenden
echo
-Befehle fügen zusätzliche URLs mit >>
(doppelter Umleitung) an die Datei an
Lassen Sie uns den Inhalt unserer Datei überprüfen, um sicherzustellen, dass er korrekt ist:
cat download_list.txt
Sie sollten drei URLs sehen, jeweils in einer eigenen Zeile:
https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz
Verwenden von wget mit einer Eingabedatei
Jetzt können wir die -i
-Option mit wget
verwenden, um die URLs aus unserer Datei zu lesen und alle Dateien herunterzuladen:
wget -i download_list.txt
Dieser Befehl teilt wget
mit, die URLs aus download_list.txt
zu lesen und jede Datei nacheinander herunterzuladen. Sie werden für jeden Download eine Ausgabe sehen, ähnlich wie beim Herunterladen einer einzelnen Datei:
--2024-01-10 10:30:51-- https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
Resolving www.python.org (www.python.org)... 151.101.76.223, 2a04:4e42:12::223
Connecting to www.python.org (www.python.org)|151.101.76.223|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22808518 (22M) [application/octet-stream]
Saving to: 'Python-3.7.0.tgz'
Python-3.7.0.tgz 100%[=============================================================>] 21.75M 25.9MB/s in 0.8s
2024-01-10 10:30:52 (25.9 MB/s) - 'Python-3.7.0.tgz' saved [22808518/22808518]
--2024-01-10 10:30:52-- https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
...
Überprüfen der heruntergeladenen Dateien
Nachdem die Downloads abgeschlossen sind, überprüfen wir, ob alle Dateien korrekt heruntergeladen wurden:
ls -lh Python-3.7.*
Sie sollten die drei Python 3.7.x-Dateien sehen, die wir aus der Liste heruntergeladen haben:
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.0.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:30 Python-3.7.1.tgz
-rw-r--r-- 1 labex labex 22M Jan 10 10:31 Python-3.7.2.tgz
Erstellen eines Batch-Download-Skripts
Für die zukünftige Verwendung erstellen wir ein einfaches Shell-Skript, das Dateien aus einer Liste herunterladen kann. Dies zeigt, wie wget
in der Automatisierung verwendet werden kann:
cd ~/project/download_resources
nano batch_download.sh
Geben Sie den folgenden Inhalt in die Datei ein:
#!/bin/bash
## Ein einfaches Skript zum Herunterladen von Dateien aus einer Liste
if [ -f "$1" ]; then
echo "Downloading files from list: $1"
wget -i "$1"
else
echo "Error: File $1 not found"
exit 1
fi
Speichern Sie die Datei, indem Sie Strg+O
drücken, dann Enter
, und verlassen Sie die Datei mit Strg+X
.
Machen Sie das Skript ausführbar:
chmod +x batch_download.sh
Jetzt können Sie dieses Skript in Zukunft verwenden, um Dateien aus jeder Liste herunterzuladen:
./batch_download.sh download_list.txt
Dieser Befehl würde dasselbe tun wie unser früherer wget -i download_list.txt
-Befehl, aber er ist in einem Skript verpackt, das Sie wiederverwenden können.