Nicht-interaktives Herunterladen in Linux

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Willkommen in diesem Lab für Anfänger über nicht-interaktives Herunterladen in Linux. Die Fähigkeit, Dateien effizient über die Befehlszeile herunterzuladen, ist eine essentielle Fähigkeit für jeden Linux-Benutzer oder Systemadministrator.

In diesem Lab werden Sie lernen, wie Sie den Befehl wget verwenden, ein leistungsstarkes Werkzeug, das es Ihnen ermöglicht, Dateien aus dem Internet ohne manuelle Eingriffe herunterzuladen. Dieses Tool ist besonders nützlich, wenn Sie mehrere Dateien abrufen, im Hintergrund herunterladen oder Herunterladungsaufgaben in Skripten automatisieren müssen.

Am Ende dieses Labs werden Sie verstehen, wie Sie wget verwenden können, um einzelne Dateien herunterzuladen, Herunterladungen umzubenennen und mehrere Dateien aus einer Liste herunterzuladen – alles über die Befehlszeile ohne grafische Oberflächen oder interaktive Eingabeaufforderungen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/PackagesandSoftwaresGroup -.-> linux/wget("Non-interactive Downloading") subgraph Lab Skills linux/echo -.-> lab-271439{{"Nicht-interaktives Herunterladen in Linux"}} linux/ls -.-> lab-271439{{"Nicht-interaktives Herunterladen in Linux"}} linux/cat -.-> lab-271439{{"Nicht-interaktives Herunterladen in Linux"}} linux/cd -.-> lab-271439{{"Nicht-interaktives Herunterladen in Linux"}} linux/mkdir -.-> lab-271439{{"Nicht-interaktives Herunterladen in Linux"}} linux/wget -.-> lab-271439{{"Nicht-interaktives Herunterladen in Linux"}} end

Einrichten der Umgebung und grundlegendes Herunterladen

In diesem ersten Schritt werden wir ein Arbeitsverzeichnis erstellen und lernen, wie man eine einzelne Datei mit dem Befehl wget herunterlädt.

Erstellen eines Arbeitsverzeichnisses

Beginnen wir damit, ein Verzeichnis zu erstellen, in dem wir alle heruntergeladenen Dateien speichern. Dies hilft, unsere Dateien an einem einzigen Ort organisiert zu halten.

Navigieren Sie in das Projektverzeichnis und erstellen Sie ein neues Verzeichnis namens download_resources:

cd ~/project
mkdir download_resources

Grundlegendes Verständnis des wget-Befehls

Der Befehl wget ist ein Werkzeug zum nicht-interaktiven Herunterladen von Dateien aus dem Internet. Seine grundlegende Syntax lautet:

wget [Optionen] [URL]

Ihr erster Download

Jetzt verwenden wir wget, um eine Datei herunterzuladen. Wir werden ein Python-Verteilungspaket als Testdatei herunterladen:

cd ~/project/download_resources
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz

Wenn Sie diesen Befehl ausführen, sollten Sie eine Ausgabe ähnlich der folgenden sehen:

--2024-01-10 10:14:51--  https://www.python.org/ftp/python/3.6.1/Python-3.6.1.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: 22540566 (21M) [application/octet-stream]
Saving to: 'Python-3.6.1.tgz'

Python-3.6.1.tgz                  100%[=============================================================>]  21.50M  26.8MB/s    in 0.8s

2024-01-10 10:14:52 (26.8 MB/s) - 'Python-3.6.1.tgz' saved [22540566/22540566]

Diese Ausgabe zeigt:

  • Die URL, auf die zugegriffen wird
  • Die IP-Adresse des Servers
  • Die HTTP-Antwort (200 OK bedeutet erfolgreich)
  • Die Dateigröße (etwa 21 MB)
  • Den Downloadfortschritt
  • Die Downloadgeschwindigkeit und -zeit
  • Die Bestätigung, dass die Datei unter ihrem ursprünglichen Namen gespeichert wurde

Lassen Sie uns überprüfen, ob die Datei korrekt heruntergeladen wurde:

ls -lh

Sie sollten die Datei Python-3.6.1.tgz im Verzeichnis mit ihrer entsprechenden Größe sehen.

Herunterladen mit benutzerdefinierten Dateinamen

In diesem Schritt werden wir untersuchen, wie man eine Datei herunterlädt und sie mit einem benutzerdefinierten Dateinamen speichert, anstatt den Standardnamen aus der URL zu verwenden.

Verwenden der -O-Option

Die -O-Option (großes O, kein Nullzeichen) ermöglicht es Ihnen, den Namen der Ausgabedatei anzugeben. Dies ist nützlich, wenn:

  • Sie einen beschreibenderen Dateinamen wünschen
  • Der Standarddateiname aus der URL zu komplex ist
  • Sie mehrere Versionen derselben Ressource herunterladen

Versuchen wir, ein weiteres Python-Paket herunterzuladen, aber diesmal speichern wir es mit einem benutzerdefinierten Namen:

cd ~/project/download_resources
wget -O CustomPython.tgz https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz

In diesem Befehl:

  • -O CustomPython.tgz teilt wget mit, die Datei als CustomPython.tgz zu speichern
  • Die Datei wird von der angegebenen URL heruntergeladen, aber mit unserem benutzerdefinierten Namen gespeichert

Die Ausgabe wird ähnlich wie zuvor sein, aber beachten Sie, dass die Zeile "Saving to" jetzt unseren benutzerdefinierten Dateinamen anzeigt:

--2024-01-10 10:20:51--  https://www.python.org/ftp/python/3.6.2/Python-3.6.2.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: 22676538 (22M) [application/octet-stream]
Saving to: 'CustomPython.tgz'

CustomPython.tgz                  100%[=============================================================>]  21.63M  25.9MB/s    in 0.8s

2024-01-10 10:20:52 (25.9 MB/s) - 'CustomPython.tgz' saved [22676538/22676538]

Lassen Sie uns überprüfen, ob unsere Datei mit dem benutzerdefinierten Namen heruntergeladen wurde:

ls -lh

Sie sollten jetzt sowohl die ursprüngliche Datei Python-3.6.1.tgz als auch Ihre neue Datei CustomPython.tgz im Verzeichnis sehen.

Weitere nützliche Optionen

Während wir uns mit den wget-Optionen vertraut machen, hier sind noch einige weitere nützliche Optionen:

  • -q (quiet): Unterdrückt die Ausgabe, nützlich für Skripte
  • -c (continue): Setzt einen teilweise heruntergeladenen Download fort
  • --limit-rate=1m: Begrenzt die Downloadgeschwindigkeit (z.B. auf 1 Megabyte pro Sekunde)

Beispielsweise, um stillschweigend mit einem benutzerdefinierten Namen herunterzuladen:

wget -q -O PythonQuiet.tgz https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

Dieser Befehl zeigt keine Ausgabe an, aber die Datei wird heruntergeladen. Sie können dies überprüfen mit:

ls -lh

Sie sollten jetzt auch die Datei PythonQuiet.tgz in Ihrem Verzeichnis sehen.

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.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den wget-Befehl für die nicht-interaktive Dateiherunterladung in Linux verwenden. Sie verfügen jetzt über die Fähigkeiten, um:

  • Einzelne Dateien mit grundlegenden wget-Befehlen herunterzuladen
  • Heruntergeladene Dateien mit benutzerdefinierten Namen mithilfe der -O-Option zu speichern
  • Eine Liste von URLs zu erstellen und mehrere Dateien auf einmal mithilfe der -i-Option herunterzuladen
  • Einfache Automatisierungsskripte für Batch-Downloads zu erstellen

Diese Fähigkeiten sind für Systemadministratoren, Entwickler und alle Linux-Benutzer von Wert, die Dateien effizient über die Befehlszeile herunterladen müssen. Die nicht-interaktive Dateiherunterladung ist besonders nützlich für die Automatisierung, die Verwaltung von Remote-Servern und in Situationen, in denen keine grafischen Benutzeroberflächen zur Verfügung stehen.

Einige zusätzliche wget-Funktionen, die Sie gerne selbst erkunden können, sind:

  • Rekursives Herunterladen mit -r zum Spiegeln von Websites
  • Hintergrund-Herunterladen mit -b für lang dauernde Downloads
  • Die Verwendung von Authentifizierung mit --user und --password für geschützte Ressourcen
  • Das Einstellen von Timeouts, Wiederholungen und anderen Verbindungsparametern

Mit diesen Funktionen können Sie eine Vielzahl von Download-Szenarien effizient über die Linux-Befehlszeile bewältigen.