• Allgemein
  • Linux-Verzeichnis kopieren: Anleitung und Best Practices

Linux-Verzeichnis kopieren: Anleitung und Best Practices

Befehl zum Kopieren von Ordnern in Linux

Zum Kopieren von Ordnern unter Linux verwendest du den Befehl cp. Dieser Befehl bietet eine Vielzahl von Optionen, mit denen du deine Kopieraufgabe an die jeweiligen Anforderungen anpassen kannst.

Syntax

Die grundlegende Syntax des Befehls cp lautet:

cp [Optionen] Quelle Ziel

Dabei gibt Quelle den zu kopierenden Ordner an und Ziel gibt den Zielordner an, in den der Ordner kopiert werden soll.

Optionen

Der Befehl cp verfügt über eine Reihe nützlicher Optionen, darunter:

  • -r (rekursiv): Kopiert auch alle Unterverzeichnisse und Dateien im Quellordner.
  • -a (Archiv): Kopiert die Dateiberechtigungen, Zeitstempel und anderen Metadaten mit.
  • -f (force): Überschreibt vorhandene Dateien im Zielordner ohne Bestätigung.
  • -v (verbose): Gibt detaillierte Informationen zum Kopiervorgang aus.
  • -P (no dereference): Kopiert symbolische Links anstelle der Dateien, auf die sie verweisen.

Verwendung

Um einen Ordner zu kopieren, gibst du einfach den Befehl cp mit den entsprechenden Optionen sowie dem Quell- und Zielordner an. Beispielsweise kopiert der folgende Befehl den Ordner /home/benutzer/Dokumente in den Ordner /backup/Dokumente:

cp -r /home/benutzer/Dokumente /backup/Dokumente

Verwende die Option -v, um den Fortschritt des Kopiervorgangs zu überwachen:

cp -v -r /home/benutzer/Dokumente /backup/Dokumente

Du kannst auch mehrere Quellordner angeben, indem du sie mit Leerzeichen trennst:

cp -r /home/benutzer/Dokumente /home/benutzer/Bilder /backup

Dadurch werden die Ordner Dokumente und Bilder in den Ordner /backup kopiert.

Kopieren von Ordnern mit Unterverzeichnissen

Rekursives Kopieren

Wenn du einen Ordner mit Unterverzeichnissen kopieren möchtest, kannst du den rekursiven Kopiervorgang verwenden. Mit dieser Option werden alle Unterverzeichnisse und deren Inhalte beibehalten. Der Befehl cp mit der Option -r (rekursiv) ermöglicht rekursives Kopieren:

cp -r Quellverzeichnis/ Zielverzeichnis/

Verborgene Dateien und Berechtigungen

Standardmäßig werden versteckte Dateien (.dot-Dateien) nicht mitkopiert. Du kannst diese einbeziehen, indem du die Option -a (Archiv) verwendest:

cp -a -r Quellverzeichnis/ Zielverzeichnis/

Diese Option bewahrt auch die Berechtigungen und Metadaten der ursprünglichen Dateien.

Ausschlusslisten

Wenn du bestimmte Dateien oder Unterverzeichnisse vom Kopiervorgang ausschließen möchtest, kannst du dies mit der Option --exclude tun. Du kannst mehrere Muster angeben, indem du sie durch Kommata trennst:

cp -a -r Quellverzeichnis/ Zielverzeichnis/ --exclude ".*", "unwichtig_datei"

Beispiele

Um beispielsweise den Ordner Projekt mit allen Unterverzeichnissen in den Ordner Kopien zu kopieren und versteckte Dateien beizubehalten:

cp -a -r Projekt/ Kopien/

Um den Ordner Dokumente zu kopieren und Dateien mit der Erweiterung .txt auszuschließen:

cp -a -r Dokumente/ Kopien/ --exclude "*.txt"

Kopieren von Ordnern mit Berechtigungen

Das Kopieren von Ordnern mit ihren ursprünglichen Berechtigungen ist wichtig, um die Systemintegrität und die Sicherheit zu gewährleisten. Mit dem Linux-Befehl cp kannst du Berechtigungen beim Kopieren von Ordnern beibehalten.

—Kopieren von Ordnern mit der `-p`-Option—

Füge die -p-Option (bewahren) zu deinem cp-Befehl hinzu, um Dateiberechtigungen, Zeitstempel und andere Metadaten zu kopieren:

cp -p Quellordner/ Zielordner/

—Kopieren von Dateizugriffslisten (ACLs)—

Wenn du Dateizugriffslisten (ACLs) kopieren möchtest, verwende die -a-Option (all):

cp -a Quellordner/ Zielordner/

Beachte, dass die -a-Option auch andere Metadaten wie Symlinks und erweiterte Attribute kopiert.

—Kopieren von Berechtigungen rekursiv—

Um Berechtigungen rekursiv für alle Unterverzeichnisse und Dateien innerhalb eines Ordners zu kopieren, verwende die -R-Option (rekursiv) zusammen mit -p oder -a:

cp -Rp Quellordner/ Zielordner/

—Sonderfall: Berechtigungen als Root-Benutzer—

Wenn du einen Ordner kopierst, der Root gehört, musst du als Root-Benutzer agieren, um auch die Berechtigungen des Root-Benutzers zu kopieren. Verwende dazu den Befehl sudo:

sudo cp -p Quellordner/ Zielordner/

—Best Practices—

  • Verwende immer die -p-Option, um Berechtigungen beim Kopieren von Ordnern beizubehalten.
  • Überprüfe die Berechtigungen des Zielordners, um sicherzustellen, dass der neue Ordner die erwarteten Berechtigungen hat.
  • Verwende die -a-Option nur, wenn du alle Metadaten, einschließlich ACLs, kopieren musst.
  • Sei vorsichtig beim Kopieren von Berechtigungen als Root-Benutzer, da dies die Systemintegrität beeinträchtigen kann.

Kopieren von Ordnern über mehrere Partitionen

Das Kopieren von Ordnern über mehrere Partitionen ist in Linux mit dem Befehl rsync möglich. rsync ist ein leistungsstarkes Dienstprogramm zum Synchronisieren und Kopieren von Dateien und Verzeichnissen.

Um einen Ordner über mehrere Partitionen zu kopieren, verwende die folgende Syntax:

rsync -av /pfad/zu/quelle /pfad/zu/ziel

Dabei ist:

  • -a die Option zum Archivieren, die Attribute, Zeitstempel, Berechtigungen und Symlinks beibehält.
  • -v die Option zum Anzeigen detaillierter Informationen zum Kopierfortschritt.
  • /pfad/zu/quelle ist der Pfad zum Quellverzeichnis.
  • /pfad/zu/ziel ist der Pfad zum Zielverzeichnis, das sich auf einer anderen Partition befinden kann.

Kopieren mit Fortschrittsbalken

Um den Kopiervorgang mit einem Fortschrittsbalken anzuzeigen, verwende die Option --progress:

rsync --progress -av /pfad/zu/quelle /pfad/zu/ziel

Ausschlusslisten

Manchmal möchtest du möglicherweise bestimmte Dateien oder Verzeichnisse vom Kopieren ausschließen. Dazu kannst du die Option --exclude verwenden:

rsync -av --exclude="datei_oder_verzeichnis_zu_ausschließen" /pfad/zu/quelle /pfad/zu/ziel

Du kannst auch mehrere Ausschlüsse angeben, indem du sie durch Kommas trennst:

rsync -av --exclude="datei1,datei2,verzeichnis" /pfad/zu/quelle /pfad/zu/ziel

Zeitstempel beibehalten

Standardmäßig behält rsync Zeitstempel nicht bei. Um sie beizubehalten, verwende die Option --times:

rsync -av --times /pfad/zu/quelle /pfad/zu/ziel

Best Practices

Beim Kopieren von Ordnern über mehrere Partitionen solltest du die folgenden Best Practices beachten:

  • Stelle sicher, dass du über die erforderlichen Berechtigungen zum Kopieren der Ordner verfügst.
  • Verwende rsync mit der Option -a, um alle Attribute und Zeitstempel beizubehalten.
  • Verwende die Option --progress, um den Fortschritt des Kopiervorgangs zu überwachen.
  • Schließe bei Bedarf bestimmte Dateien oder Verzeichnisse mithilfe der Option --exclude aus.

Kopieren von Ordnern als Root-Benutzer

Beim Kopieren von Ordnern als Root-Benutzer erhältst du uneingeschränkten Zugriff auf das System und kannst sogar geschützte Dateien und Verzeichnisse kopieren. Diese Option ist zwar leistungsstark, sollte aber mit Vorsicht verwendet werden, da sie beim Kopieren in sensible Bereiche des Systems zu unerwünschten Ergebnissen führen kann.

Verwendung von sudo

Um einen Ordner als Root-Benutzer zu kopieren, kannst du den Befehl sudo vor dem Kopierbefehl verwenden. Beispielsweise kannst du den Befehl sudo cp verwenden, um den Ordner "ordner1" in den Ordner "ordner2" zu kopieren:

sudo cp -r ordner1 ordner2

Dabei fordert dich der Befehl zur Eingabe deines Root-Passworts auf. Nach erfolgreicher Authentifizierung wird der Ordner kopiert.

Risiken und Vorsichtsmaßnahmen

Beachte, dass das Kopieren von Ordnern als Root-Benutzer die folgenden Risiken mit sich bringt:

  • Unbeabsichtigtes Überschreiben von Dateien: Da der Root-Benutzer über uneingeschränkten Zugriff verfügt, kannst du versehentlich wichtige Dateien überschreiben.
  • Änderung von Systemberechtigungen: Das Kopieren von Ordnern in Systemverzeichnisse kann zu Änderungen an den Berechtigungen führen, was die Stabilität des Systems beeinträchtigen kann.
  • Sicherheitsrisiken: Das Kopieren von Ordnern von einem unsicheren Speicherort kann Sicherheitsrisiken für dein System darstellen.

Daher solltest du beim Kopieren von Ordnern als Root-Benutzer die folgenden Vorsichtsmaßnahmen treffen:

  • Kopiere nur Ordner, die du wirklich kopieren musst.
  • Überprüfe die Zielverzeichnisse sorgfältig, bevor du den Befehl ausführst.
  • Erstelle vor dem Kopieren immer eine Sicherungskopie der wichtigen Ordner.
  • Verwende den Schalter -v (Verbose), um den Fortschritt des Kopiervorgangs zu überwachen.

Durch die Befolgung dieser Vorsichtsmaßnahmen kannst du die Risiken beim Kopieren von Ordnern als Root-Benutzer minimieren.

Kopieren von Ordnern mit dem Fortschrittsbalken

Der Fortschrittsbalken kann dir visuell den Fortschritt des Kopiervorgangs anzeigen, was besonders nützlich ist, wenn du große Ordner oder eine große Anzahl von Dateien kopierst.

Mit dem Befehl pv

Der Befehl pv kann verwendet werden, um einen Fortschrittsbalken für den Kopiervorgang zu erstellen. So verwendest du ihn:

pv source_directory | tar -cf - | tar -xvf - -C destination_directory

In diesem Befehl:

  • pv zeigt den Fortschrittsbalken an.
  • source_directory ist das Quellverzeichnis, das kopiert werden soll.
  • tar -cf - erstellt ein tar-Archiv des Quellverzeichnisses.
  • tar -xvf - extrahiert das tar-Archiv in das Zielverzeichnis.
  • -C destination_directory gibt das Zielverzeichnis an, in das der Ordner kopiert werden soll.

Mit dem Befehl cpio

Der Befehl cpio kann auch mit der Option -v verwendet werden, um einen Fortschrittsbalken anzuzeigen. So verwendest du ihn:

cd source_directory && cpio -pdv | cpio -ivd -C destination_directory

In diesem Befehl:

  • cd source_directory wechselt in das Quellverzeichnis.
  • cpio -pdv erstellt ein cpio-Archiv des Quellverzeichnisses und zeigt den Fortschritt an.
  • cpio -ivd extrahiert das cpio-Archiv in das Zielverzeichnis und zeigt den Fortschritt an.
  • -C destination_directory gibt das Zielverzeichnis an, in das der Ordner kopiert werden soll.

Kopieren von Ordnern mit Symbolischen Links

Wenn du einen Ordner kopierst, der symbolische Links enthält, musst du vorsichtig sein, denn diese Links werden standardmäßig nicht mitkopiert. Wenn du die symbolischen Links beibehalten möchtest, musst du die Option -l verwenden.

Was sind symbolische Links?

Symbolische Links sind spezielle Dateien, die auf andere Dateien oder Verzeichnisse verweisen. Sie verhalten sich wie Verknüpfungen in Windows oder macOS. Wenn du einen symbolischen Link öffnest, wird die Datei oder das Verzeichnis geöffnet, auf das er verweist.

Kopieren von Ordnern mit Symbolischen Links

Um einen Ordner mit symbolischen Links zu kopieren, verwende den folgenden Befehl:

cp -lr <Quellverzeichnis> <Zielverzeichnis>

Die Option -l weist cp an, symbolische Links beizubehalten, und die Option -r weist cp an, Unterverzeichnisse rekursiv zu kopieren.

Was passiert, wenn ich die Option -l nicht verwende?

Wenn du die Option -l nicht verwendest, kopiert cp die Dateien und Verzeichnisse, auf die die symbolischen Links verweisen. Die symbolischen Links selbst werden jedoch nicht kopiert.

Dies kann zu Problemen führen, wenn du versuchst, auf die kopierten Dateien oder Verzeichnisse zuzugreifen. Wenn du beispielsweise einen Ordner mit dem Namen "Dokumente" kopierst, der einen symbolischen Link zu deinem Desktop enthält, wird der symbolische Link nicht kopiert. Wenn du dann versuchst, auf deine Dokumente zuzugreifen, wird der symbolische Link nicht aufgelöst und du kannst nicht auf deine Dateien zugreifen.

Best Practices

Wenn du Ordner mit symbolischen Links kopierst, ist es wichtig, die Option -l zu verwenden. Dies stellt sicher, dass die symbolischen Links beibehalten werden und du weiterhin auf die Dateien und Verzeichnisse zugreifen kannst, auf die sie verweisen.

Kopieren von Ordnern mit Ausschlusslisten

Manchmal musst du nur bestimmte Dateien oder Unterverzeichnisse eines Ordners kopieren. Dafür kannst du Ausschlusslisten verwenden, um anzugeben, welche Dateien oder Verzeichnisse aus dem Kopiervorgang ausgeschlossen werden sollen.

Verwendung der --exclude-Option

Die Option --exclude ermöglicht es dir, bestimmte Muster für Dateien oder Verzeichnisse anzugeben, die nicht kopiert werden sollen. Du kannst mehrere --exclude-Optionen verwenden, um mehrere Muster anzugeben.

Beispiel

Angenommen, du möchtest den Ordner /home/user/Dokumente in den Ordner /backup/Dokumente kopieren, aber die Unterverzeichnisse temp und gelöscht ausschließen. Du kannst folgenden Befehl verwenden:

cp -r --exclude temp --exclude gelöscht /home/user/Dokumente /backup/Dokumente

Glob-Muster

Du kannst Glob-Muster verwenden, um mehrere Dateien oder Verzeichnisse mit einer einzigen --exclude-Option anzusprechen. Glob-Muster sind Zeichenfolgen, die Platzhalter wie * und ? enthalten.

  • * entspricht einer beliebigen Anzahl von Zeichen.
  • ? entspricht jedem einzelnen Zeichen.

Beispiel

Angenommen, du möchtest den Ordner /home/user/Bilder in den Ordner /backup/Bilder kopieren, aber alle Dateien mit der Erweiterung .png ausschließen. Du kannst folgenden Befehl verwenden:

cp -r --exclude *.png /home/user/Bilder /backup/Bilder

Verschachtelte Ausschlusslisten

Du kannst verschachtelte Ausschlusslisten verwenden, um Dateien oder Verzeichnisse aus bestimmten Unterverzeichnissen auszuschließen. Verwende dazu die Option --exclude-from gefolgt von einer Datei, die die Ausschlussregeln enthält.

Beispiel

Angenommen, du hast eine Datei /home/user/ausschlüsse.txt mit folgendem Inhalt:

temp/*
gelöscht

Du kannst dann die Ausschlussregeln aus dieser Datei verwenden, wenn du den Ordner /home/user/Dokumente kopierst, indem du folgenden Befehl verwendest:

cp -r --exclude-from /home/user/ausschlüsse.txt /home/user/Dokumente /backup/Dokumente

Kopieren von Ordnern mit Zeitstempeln

Wenn du Ordner kopierst, kannst du festlegen, dass die Zeitstempel der ursprünglichen Dateien und Verzeichnisse beibehalten werden. Dies kann hilfreich sein, wenn du sicherstellen möchtest, dass die Dateien auf dem Zielsystem dieselben Zeitstempel haben wie auf dem Quellsystem.

Verwendung der Option --preserve=timestamps

Um die Zeitstempel zu erhalten, kannst du die Option --preserve=timestamps verwenden:

cp --preserve=timestamps quellordner zielordner

Erhaltung von Zeitstempeln in Unterverzeichnissen

Standardmäßig gilt die Option --preserve=timestamps nur für den Quellordner selbst und nicht für dessen Unterverzeichnisse. Um die Zeitstempel auch in Unterverzeichnissen beizubehalten, verwende die Option -R (rekursiv):

cp -R --preserve=timestamps quellordner zielordner

Bewahre nur den Zeitstempel des letzten Zugriffs

Wenn du nur den Zeitstempel des letzten Zugriffs (atime) beibehalten möchtest, kannst du die Option --preserve=atime verwenden:

cp --preserve=atime quellordner zielordner

Bewahre nur den Zeitstempel der letzten Änderung

Um nur den Zeitstempel der letzten Änderung (mtime) beizubehalten, verwende die Option --preserve=mtime:

cp --preserve=mtime quellordner zielordner

Bewahre Zeitstempel von Symbolischen Links bei

Standardmäßig werden die Zeitstempel von symbolischen Links nicht beibehalten. Um dies zu ändern, verwende die Option -l (dereferenzieren):

cp -l --preserve=timestamps quellordner zielordner

Best Practices für das Kopieren von Ordnern unter Linux

Beim Kopieren von Ordnern unter Linux gibt es einige Best Practices, die du befolgen sollten, um sicherzustellen, dass der Vorgang effizient, fehlerfrei und deinen Anforderungen entspricht:

Plane den Kopiervorgang

  • Bevor du mit dem Kopieren beginnst, plane den Zielort und die erforderlichen Berechtigungen.
  • Überprüfe den verfügbaren Speicherplatz am Zielort, um sicherzustellen, dass genügend Platz für den zu kopierenden Ordner vorhanden ist.
  • Stelle sicher, dass du über die erforderlichen Zugriffsrechte sowohl für den Quell- als auch für den Zielordner verfügst.

Verwende den richtigen Befehl

  • Wähle den geeigneten Befehl zum Kopieren von Ordnern basierend auf deinen Anforderungen.
  • Der Befehl cp ist für einfache Kopieraufgaben geeignet, während der Befehl rsync für komplexere Szenarien wie das Kopieren von Ordnern mit Unterverzeichnissen, Berechtigungen und Zeitstempeln verwendet werden kann.

Optimiere die Leistung

  • Wenn du große Ordner kopierst, verwende die Option -b (Blockgröße) mit dem Befehl cp oder rsync, um die Übertragungsleistung zu verbessern.
  • Überlege die Verwendung eines Tools zur Datenübertragung wie lftp oder rsync GUI, um den Kopiervorgang zu automatisieren und Fehler zu minimieren.

Fehlerbehandlung

  • Verwende die Option -v (ausführlich) mit dem Befehl cp oder rsync, um den Fortschritt des Kopiervorgangs zu überwachen und mögliche Fehler zu erkennen.
  • Lege regelmäßig Backups des Quellordners an, um Datenverlust im Falle eines unerwarteten Fehlers zu vermeiden.
  • Erwäge die Verwendung eines Tools zur Fehlerbehandlung wie fail2ban, um wiederholte Fehlversuche zu erkennen und zu blockieren.

Sicherheit

  • Wenn du sensible Daten kopierst, verschlüssele den Zielordner mit einem Tool wie gpg oder veracrypt, um die Vertraulichkeit zu wahren.
  • Sei vorsichtig, wenn du Ordner von unbekannten Quellen kopierst, da sie möglicherweise Malware oder andere schädliche Inhalte enthalten.
  • Überprüfe die Berechtigungen des Zielordners sorgfältig, um unbefugten Zugriff zu verhindern.