Dateien in Red Hat Enterprise Linux übertragen

Red Hat Enterprise LinuxRed Hat Enterprise LinuxBeginner
Jetzt üben

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

Einführung

In diesem Labor erhalten Sie praktische Erfahrung in der effizienten und sicheren Verwaltung und Übertragung von Dateien auf einem RHEL-System. Sie lernen, Dateien zu erstellen, aufzulisten und aus tar-Archiven, einschließlich komprimierter Archive, zu extrahieren. Dies ist essentiell für die Verpackung und Sicherung von Daten.

Darüber hinaus führt Sie dieses Labor durch die sichere Übertragung von Dateien mithilfe von sftp für interaktive Dateiübertragungen und rsync für robuste und effiziente Dateisynchronisation. Dies gewährleistet die Datenintegrität und Sicherheit während der Netzwerkvorgänge.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 91% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Erstellen und Auflisten von tar-Archiven

In diesem Schritt lernen Sie, wie man tar-Archive erstellt und auflistet. Das tar-Dienstprogramm ist ein leistungsstarkes Kommandozeilen-Tool zum Archivieren von Dateien und Verzeichnissen. Es wird häufig für Sicherungen und die Übertragung von Dateien verwendet.

Der Befehl tar benötigt einen Aktionsoption, um anzugeben, welche Operation ausgeführt werden soll. Zu den gängigen Aktionsoptionen gehören:

  • -c oder --create: Erstellt ein neues Archiv.
  • -t oder --list: Listet den Inhalt eines Archivs auf.
  • -x oder --extract: Extrahiert Dateien aus einem Archiv.

Zusätzlich verwendet tar oft allgemeine Optionen, um sein Verhalten zu modifizieren:

  • -v oder --verbose: Zeigt die Dateien an, die während des Archivierens oder der Extraktion verarbeitet werden.
  • -f oder --file: Gibt den Namen der Archivdatei an. Dieser Option muss der Archivdateiname folgen.

Beginnen wir mit der Erstellung einiger Beispieldateien, die wir archivieren werden. Navigieren Sie zu Ihrem Verzeichnis ~/project, Ihrem Standardarbeitsverzeichnis.

cd ~/project

Erstellen Sie nun ein neues Verzeichnis namens my_files und einige Beispieltextdateien darin.

mkdir my_files
echo "Dies ist der Inhalt von Datei1." > my_files/file1.txt
echo "Dies ist der Inhalt von Datei2." > my_files/file2.txt
echo "Dies ist der Inhalt von Datei3." > my_files/file3.txt
ls my_files

Sie sollten die drei Dateien sehen:

file1.txt  file2.txt  file3.txt

Erstellen wir nun ein tar-Archiv des Verzeichnisses my_files. Wir nennen das Archiv my_archive.tar.

tar -cvf my_archive.tar my_files

Die Ausgabe zeigt die Dateien an, die dem Archiv hinzugefügt werden:

my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt

Sie können überprüfen, dass die Archivdatei my_archive.tar in Ihrem aktuellen Verzeichnis erstellt wurde:

ls

Sie sollten my_archive.tar zusammen mit my_files sehen:

my_archive.tar  my_files

Als Nächstes listen wir den Inhalt der Datei my_archive.tar mit den Optionen -t (Liste) und -f (Datei) auf.

tar -tf my_archive.tar

Die Ausgabe zeigt den Inhalt des Archivs an:

my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt

Wenn Sie detailliertere Informationen wie Dateirechte, Eigentümer und Größe sehen möchten, können Sie die Option -v (verbose) hinzufügen:

tar -tvf my_archive.tar

Die Ausgabe wird ähnlich aussehen und bietet detailliertere Informationen zu jedem archivierten Element:

drwxr-xr-x labex/labex        0 2023-10-27 10:00 my_files/
-rw-r--r-- labex/labex       22 2023-10-27 10:00 my_files/file1.txt
-rw-r--r-- labex/labex       22 2023-10-27 10:00 my_files/file2.txt
-rw-r--r-- labex/labex       22 2023-10-27 10:00 my_files/file3.txt

Beachten Sie, dass tar standardmäßig die führenden / aus absoluten Pfaden entfernt, wenn es archive. Dies ist eine Sicherheitsmaßnahme, um versehentliches Überschreiben von Systemdateien beim Extrahieren von Archiven zu verhindern. Wenn Sie beispielsweise /etc/hosts archivieren würden, würde es als etc/hosts im tar-Archiv gespeichert werden. Dies ermöglicht es Ihnen, es an einen neuen Ort zu extrahieren, ohne die ursprüngliche Datei /etc/hosts zu beeinträchtigen.

Dateien aus tar-Archiven extrahieren

In diesem Schritt lernen Sie, wie man Dateien aus einem tar-Archiv extrahiert. Das Extrahieren von Dateien ist der Prozess, die archivierten Inhalte wieder in das Dateisystem zu platzieren.

Die primäre Option zum Extrahieren von Dateien ist -x oder --extract. Sie verwenden typischerweise auch -f, um die Archivdatei anzugeben, und -v für eine ausführliche Ausgabe, um zu sehen, welche Dateien extrahiert werden.

Vor dem Extrahieren ist es gut, Archive in ein leeres Verzeichnis zu extrahieren, um zu vermeiden, dass vorhandene Dateien überschrieben oder mit anderen Inhalten vermischt werden. Erstellen wir ein neues Verzeichnis namens extracted_files in Ihrem Verzeichnis ~/project.

cd ~/project
mkdir extracted_files

Navigieren Sie nun in das Verzeichnis extracted_files. Dadurch wird sichergestellt, dass die Inhalte des Archivs hier extrahiert werden.

cd extracted_files

Extrahieren wir nun den Inhalt von my_archive.tar (das sich im übergeordneten Verzeichnis ~/project befindet) in das aktuelle Verzeichnis extracted_files.

tar -xvf ../my_archive.tar

Die Ausgabe zeigt die extrahierten Dateien an:

my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt

Nach dem Extrahieren können Sie den Inhalt des aktuellen Verzeichnisses (~/project/extracted_files) auflisten, um zu überprüfen, ob das Verzeichnis my_files und dessen Inhalte erfolgreich extrahiert wurden.

ls

Sie sollten das Verzeichnis my_files sehen:

my_files

Überprüfen wir nun den Inhalt des Verzeichnisses my_files innerhalb von extracted_files:

ls my_files

Sie sollten die ursprünglichen Dateien sehen:

file1.txt  file2.txt  file3.txt

Sie können auch den Inhalt einer der extrahierten Dateien anzeigen, um deren Integrität zu bestätigen:

cat my_files/file1.txt

Die Ausgabe sollte sein:

This is file1 content.

Beim Extrahieren von Dateien verwendet der Befehl tar den aktuellen umask, um Berechtigungen für die extrahierten Dateien festzulegen. Wenn Sie jedoch die ursprünglichen Dateiberechtigungen wie im Archiv erhalten möchten, können Sie die Option -p oder --preserve-permissions verwenden. Dies ist besonders nützlich bei ausführbaren Skripten oder Konfigurationsdateien, bei denen bestimmte Berechtigungen entscheidend sind. Für den Benutzer root ist diese Option oft standardmäßig aktiviert. Für reguläre Benutzer ist es empfehlenswert, sie aufzunehmen, wenn die Erhaltung der Berechtigungen wichtig ist.

Für dieses Labor werden wir die Option -p nicht explizit demonstrieren, da das Standardverhalten für unsere Textdateien ausreichend ist. Beachten Sie diese Option jedoch für zukünftige Anwendungsfälle.

Erstellen von komprimierten tar-Archiven

In diesem Schritt lernen Sie, wie man komprimierte tar-Archive erstellt. Während tar selbst nur Dateien bündelt, kann es mit Komprimierungswerkzeugen wie gzip, bzip2 und xz integriert werden, um kleinere Archivdateien zu erstellen. Dies ist entscheidend, um Festplattenspeicher zu sparen und Übertragungszeiten zu reduzieren.

Der Befehl tar bietet spezifische Optionen für verschiedene Komprimierungsalgorithmen:

  • -z oder --gzip: Verwendet die gzip-Komprimierung, was zu einer .tar.gz- oder .tgz-Endung führt. Dies ist die häufigste und schnellste Komprimierungsmethode.
  • -j oder --bzip2: Verwendet die bzip2-Komprimierung, was zu einer .tar.bz2- oder .tbz-Endung führt. Im Allgemeinen bietet dies eine bessere Komprimierung als gzip, ist aber langsamer.
  • -J oder --xz: Verwendet die xz-Komprimierung, was zu einer .tar.xz- oder .txz-Endung führt. Dies bietet die beste Komprimierungsrate unter den drei, ist aber die langsamste.
  • -a oder --auto-compress: Ermöglicht es tar, den Komprimierungsalgorithmus basierend auf der Archivendung (z. B. .tar.gz impliziert gzip) automatisch zu bestimmen. Dies ist eine bequeme Option.

Beginnen wir damit, sicherzustellen, dass Sie sich in Ihrem Verzeichnis ~/project befinden.

cd ~/project

Zuerst erstellen wir ein mit gzip komprimiertes Archiv des Verzeichnisses my_files. Wir nennen es my_archive.tar.gz.

tar -czvf my_archive.tar.gz my_files

Die Ausgabe zeigt die Dateien an, die hinzugefügt und komprimiert werden:

my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt

Sie können die Erstellung des komprimierten Archivs überprüfen:

ls -lh my_archive.tar.gz

Die Optionen -lh für ls liefern eine menschenlesbare Größe. Sie sehen eine Ausgabe ähnlich dieser, die die Dateigröße anzeigt:

-rw-r--r-- 1 labex labex 180 Okt 27 10:00 my_archive.tar.gz

(Hinweis: Die genaue Größe kann je nach System und Inhalt leicht variieren, aber sie wird für diese kleinen Textdateien eine kleine Größe sein.)

Versuchen wir nun, ein mit xz komprimiertes Archiv zu erstellen, das typischerweise eine bessere Komprimierung bietet. Wir nennen es my_archive.tar.xz.

tar -cJvf my_archive.tar.xz my_files

Wieder zeigt die Ausgabe die verarbeiteten Dateien an:

my_files/
my_files/file1.txt
my_files/file2.txt
my_files/file3.txt

Überprüfen Sie die Größe des xz-Archivs:

ls -lh my_archive.tar.xz

Sie werden feststellen, dass my_archive.tar.xz etwas kleiner als my_archive.tar.gz ist, was die bessere Komprimierungsrate von xz demonstriert.

-rw-r--r-- 1 labex labex 168 Okt 27 10:00 my_archive.tar.xz

Um ein komprimiertes tar-Archiv zu extrahieren, erkennt tar die Komprimierungsart beim Verwenden der Option -x oft automatisch. Es ist jedoch empfehlenswert, die entsprechende Dekomprimierungsoption (-z, -j oder -J) oder die Option -a (automatische Komprimierung) explizit zu verwenden.

Versuchen wir, my_archive.tar.gz in ein neues Verzeichnis namens extracted_gz zu extrahieren.

mkdir extracted_gz
tar -xzvf my_archive.tar.gz -C extracted_gz

Die Option -C (Verzeichnis ändern) teilt tar mit, die Dateien in das angegebene Verzeichnis zu extrahieren. Dies ist eine sehr nützliche Option, um Ihr aktuelles Verzeichnis nicht zu überladen.

Überprüfen Sie den Inhalt von extracted_gz:

ls extracted_gz/my_files

Sie sollten sehen:

file1.txt  file2.txt  file3.txt

Sichere Dateiübertragung mit sftp

In diesem Schritt lernen Sie, wie Sie Dateien sicher zwischen Systemen mit sftp (Secure File Transfer Program) übertragen. sftp ist ein interaktives Dateiübertragungsprogramm, das SSH (Secure Shell) für die sichere Kommunikation verwendet und Verschlüsselung und Authentifizierung bietet. Es ist Teil der OpenSSH-Suite.

Für dieses Labor simulieren wir ein entferntes System, indem wir den Benutzer labex auf demselben Host wie einen "entfernten" Benutzer verwenden. Dies ermöglicht es uns, sftp-Befehle zu üben, ohne eine separate virtuelle Maschine zu benötigen.

Stellen Sie zunächst sicher, dass Sie sich in Ihrem Verzeichnis ~/project befinden.

cd ~/project

Erstellen wir eine Datei, die wir auf das Homeverzeichnis des simulierten entfernten Benutzers "hochladen" werden.

echo "Diese Datei wird per sftp hochgeladen." > local_file.txt

Starten Sie nun eine sftp-Sitzung mit dem Benutzer labex auf localhost.

sftp labex@localhost

Sie werden nach dem Passwort für labex@localhost gefragt. Geben Sie labex ein.

Die Authentizität des Hosts 'localhost (127.0.0.1)' kann nicht festgestellt werden.
ED25519-Schlüssel-Fingerprint ist SHA256:....
Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten (ja/nein/[Fingerprint])? ja
Warnung: 'localhost' (ED25519) wurde dauerhaft der Liste der bekannten Hosts hinzugefügt.
Passwort von labex@localhost: labex
Verbindung zu localhost hergestellt.
sftp>

Sie befinden sich nun in der interaktiven sftp-Eingabeaufforderung.

Innerhalb der sftp-Eingabeaufforderung können Sie verschiedene Befehle verwenden, die einer normalen Shell ähneln.

  • pwd: Zeigt das aktuelle Arbeitsverzeichnis auf dem entfernten System an.
  • lpwd: Zeigt das aktuelle Arbeitsverzeichnis auf Ihrem lokalen System an.
  • ls: Listet Dateien auf dem entfernten System auf.
  • lls: Listet Dateien auf dem lokalen System auf.

Probieren wir sie aus:

sftp> pwd
Entferntes Arbeitsverzeichnis: /home/labex
sftp> lpwd
Lokales Arbeitsverzeichnis: /home/labex/project
sftp> ls

(Der Befehl ls zeigt den Inhalt von /home/labex auf der entfernten Seite an, was Ihrem eigenen Homeverzeichnis entspricht.)

Laden wir nun local_file.txt aus Ihrem lokalen Verzeichnis ~/project in das Homeverzeichnis des entfernten Benutzers labex (/home/labex) hoch. Verwenden Sie den Befehl put.

sftp> put local_file.txt
Hochladen von local_file.txt nach /home/labex/local_file.txt
local_file.txt                               100%   32     0.0KB/s   00:00
sftp>

Sie können überprüfen, ob die Datei hochgeladen wurde, indem Sie das entfernte Verzeichnis auflisten:

sftp> ls

Sie sollten local_file.txt unter den Dateien in /home/labex sehen.

Laden wir nun eine Datei vom entfernten System herunter. Wir laden die Datei .bashrc aus dem Homeverzeichnis des entfernten Benutzers labex in Ihr lokales Verzeichnis ~/project herunter. Verwenden Sie den Befehl get.

sftp> get .bashrc
Abrufen von /home/labex/.bashrc nach .bashrc
/home/labex/.bashrc                          100%  193     0.2KB/s   00:00
sftp>

Sie können den Download überprüfen, indem Sie Ihr lokales Verzeichnis auflisten:

sftp> lls

Sie sollten .bashrc in Ihrem lokalen Verzeichnis ~/project sehen.

Um die sftp-Sitzung zu beenden, verwenden Sie den Befehl exit oder bye.

sftp> exit

Sie kehren zu Ihrer normalen Shell-Eingabeaufforderung zurück.

Sichere Synchronisierung von Dateien mit rsync

In diesem Schritt lernen Sie, wie Sie Dateien zwischen Systemen mit dem Befehl rsync synchronisieren. rsync ist ein leistungsstarkes und vielseitiges Werkzeug zum Kopieren und Synchronisieren von Dateien und Verzeichnissen, lokal und remote. Sein Hauptvorteil ist die Fähigkeit, nur die Unterschiede zwischen Dateien zu übertragen, was es sehr effizient für Aktualisierungen macht. Wie sftp kann rsync SSH für sichere, verschlüsselte Übertragungen verwenden.

Die häufigsten Optionen für rsync umfassen:

  • -a oder --archive: Dies ist eine Kombination aus mehreren Optionen (-rlptgoD), die die meisten Dateiattribute (rekursiv, Links, Berechtigungen, Zeiten, Gruppe, Besitzer, Geräte-Dateien) beibehält. Es wird oft als "Archivmodus" bezeichnet und ist für die meisten Synchronisierungsaufgaben sehr empfehlenswert.
  • -v oder --verbose: Erhöht die Detailgenauigkeit und zeigt mehr Informationen über die Übertragung an.
  • -z oder --compress: Komprimiert die Dateiinformationen während der Übertragung, was die Übertragungsgeschwindigkeit bei langsamen Verbindungen erhöhen kann.
  • -h oder --human-readable: Gibt Zahlen in einem menschenlesbaren Format aus.
  • -n oder --dry-run: Führt einen Testlauf aus, ohne Änderungen vorzunehmen. Dies ist äußerst nützlich, um zu überprüfen, was rsync tun wird, bevor der Befehl tatsächlich ausgeführt wird.

Beginnen wir damit, sicherzustellen, dass Sie sich in Ihrem Verzeichnis ~/project befinden.

cd ~/project

Wir simulieren ein Synchronisierungsszenario, indem wir ein Quelldatei- und ein Zielverzeichnis erstellen.

Erstellen Sie ein Quelldatei-Verzeichnis source_dir mit einigen Dateien:

mkdir source_dir
echo "Inhalt von DateiA" > source_dir/fileA.txt
echo "Inhalt von DateiB" > source_dir/fileB.txt
mkdir source_dir/subdir
echo "Inhalt von Unterdatei1" > source_dir/subdir/subfile1.txt

Erstellen Sie ein leeres Zielverzeichnis dest_dir:

mkdir dest_dir

Führen wir nun einen Trockenlauf aus, um zu sehen, was rsync tun würde, wenn es source_dir mit dest_dir synchronisiert. Wir verwenden die Optionen -avh für Archivmodus, ausführliche Ausgabe und menschenlesbare Größen sowie -n für den Trockenlauf.

rsync -avhn source_dir/ dest_dir/

Wichtiger Hinweis zu den nachgestellten Schrägstrichen:

  • source_dir/: Der nachgestellte Schrägstrich bedeutet, dass der Inhalt von source_dir kopiert wird.
  • source_dir: Ohne nachgestellten Schrägstrich bedeutet dies, dass source_dir selbst in das Zielverzeichnis kopiert wird.

Die Ausgabe des Trockenlaufs zeigt Ihnen die Dateien an, die übertragen würden:

sending incremental file list
./
fileA.txt
fileB.txt
subdir/
subdir/subfile1.txt

sent 186 bytes  received 12 bytes  396.00 bytes/sec
total size is 66  speedup is 0.33 (DRY RUN)

Beachten Sie das (DRY RUN) am Ende, was anzeigt, dass keine tatsächlichen Änderungen vorgenommen wurden.

Führen wir nun die tatsächliche Synchronisierung durch. Entfernen Sie die Option -n.

rsync -avh source_dir/ dest_dir/

Die Ausgabe ist ähnlich wie beim Trockenlauf, aber ohne die Kennzeichnung (DRY RUN):

sending incremental file list
./
fileA.txt
fileB.txt
subdir/
subdir/subfile1.txt

sent 186 bytes  received 12 bytes  396.00 bytes/sec
total size is 66  speedup is 0.33

Überprüfen Sie, ob die Dateien in dest_dir kopiert wurden:

ls -R dest_dir

Sie sollten sehen:

dest_dir:
fileA.txt  fileB.txt  subdir

dest_dir/subdir:
subfile1.txt

Ändern wir nun eine Datei in source_dir und fügen eine neue Datei hinzu, um die Effizienz von rsync zu sehen.

echo "Aktualisierter Inhalt für DateiA" > source_dir/fileA.txt
echo "Neuer Dateiinhalt" > source_dir/new_file.txt

Führen Sie einen weiteren Trockenlauf aus, um zu sehen, welche Dateien rsync diesmal übertragen würde:

rsync -avhn source_dir/ dest_dir/

Die Ausgabe zeigt nur die geänderten und neuen Dateien an:

sending incremental file list
./
fileA.txt
new_file.txt

sent 128 bytes  received 12 bytes  280.00 bytes/sec
total size is 100  speedup is 0.71 (DRY RUN)

Dies demonstriert die Fähigkeit von rsync, nur die Unterschiede zu übertragen.

Führen Sie nun erneut die tatsächliche Synchronisierung durch:

rsync -avh source_dir/ dest_dir/

Überprüfen Sie erneut den Inhalt von dest_dir:

ls -R dest_dir
cat dest_dir/fileA.txt
cat dest_dir/new_file.txt

Sie sollten new_file.txt in dest_dir sehen und fileA.txt sollte "Aktualisierter Inhalt für DateiA" enthalten.

Zusammenfassung

In diesem Labor haben wir praktische Erfahrungen mit der Verwaltung und Übertragung von Dateien auf RHEL-Systemen mit essentiellen Befehlszeilenwerkzeugen gesammelt. Wir begannen mit der Beherrschung des tar-Dienstprogramms, lernten, wie man Dateien aus Archiven erstellt, auflistet und extrahiert, einschließlich der Erstellung komprimierter tar.gz-Archive für effiziente Speicherung und Übertragung.

Anschließend erkundeten wir sichere Dateiübertragungsmethoden. Wir nutzten sftp für interaktive und sichere Dateiübertragungen zwischen Systemen und verstanden seine Fähigkeiten zum Hochladen und Herunterladen von Dateien. Schließlich tauchten wir in rsync ein, ein leistungsstarkes Werkzeug zur Synchronisierung von Dateien und Verzeichnissen, wobei wir seine Effizienz bei der Bearbeitung von inkrementellen Aktualisierungen und die Sicherstellung der Datenskonsistenz an verschiedenen Standorten hervorhoben.