Website-Suche

Wie man den Befehl cp unter Linux effektiv verwendet [14 Beispiele]


Kurz: In dieser leicht verständlichen Anleitung werden wir einige praktische Beispiele für den Befehl cp besprechen. Nachdem Sie diese Anleitung befolgt haben, können Benutzer Dateien und Verzeichnisse unter Linux über die Befehlszeilenschnittstelle einfach kopieren. :

Als Linux-Nutzer interagieren wir von Zeit zu Zeit mit den Dateien und Verzeichnissen. Ein häufiger Vorgang, den Benutzer ausführen, ist das Kopieren von Dateien und Verzeichnissen. Natürlich können wir einen grafischen Dateimanager verwenden, um den Kopiervorgang durchzuführen. Die meisten Linux-Benutzer bevorzugen jedoch die Verwendung des Befehls cp aufgrund seiner Einfachheit und umfangreichen Funktionalität.

In diesem anfängerfreundlichen Leitfaden lernen wir den Befehl cp kennen. Wie der Name schon sagt, wird der Befehl cp verwendet, um Dateien und Verzeichnisse unter einem bestimmten Pfad zu kopieren.

In diesem Leitfaden werden wir die Verwendung des Befehls cp anhand praktischer Beispiele verstehen, die im Alltag verwendet werden können.

Also lasst uns loslegen.

Syntax des Befehls cp

Die Syntax des Befehls cp ist identisch mit anderen Linux-Befehlen. Auf einer hohen Ebene ist es in zwei Teile unterteilt – Optionen und Argumente:

$ cp [OPTIONS] <SOURCE> <DEST>
cp [OPTIONS] <SOURCE-1> <SOURCE-2> ... <DIRECTORY>

In der obigen Syntax stehen die eckigen Klammern ([]) für die optionalen Argumente, während eckige Klammern (<>) die obligatorischen Argumente darstellen.

1. So kopieren Sie eine Datei unter Linux

Eine der grundlegenden Anwendungen des Befehls cp besteht darin, eine Datei in ein aktuelles Verzeichnis zu kopieren. In den meisten Fällen führen Benutzer diesen Vorgang aus, um eine Sicherung der wichtigen Konfiguration zu erstellen.

Zum Beispiel erstellen wir oft eine Sicherungskopie der Datei /etc/ssh/sshd_config, bevor wir die SSH-Konfiguration aktualisieren.

Um die Verwendung zu verstehen, erstellen wir eine einfache Datei:

$ touch file-1.txt

Erstellen Sie als Nächstes eine Kopie der Datei mit dem folgenden Befehl:

$ cp file-1.txt file-2.txt

2. Fortschritt des Kopierbefehls anzeigen

Im vorherigen Beispiel haben wir den Befehl ls verwendet, um zu überprüfen, ob der Dateikopiervorgang erfolgreich war oder nicht. Es macht jedoch keinen Sinn, einen weiteren Befehl zu verwenden, nur um das Ergebnis der vorherigen Befehle zu überprüfen.

In solchen Fällen können wir den ausführlichen Modus mit der Option -v aktivieren, die eine Diagnose für jede verarbeitete Datei bereitstellt.

Erstellen wir eine Kopie der file-1.txt Datei mit dem folgenden Befehl:

$ cp -v file-1.txt file-3.txt

In der obigen Ausgabe stellt der Pfeil die Datei dar, die kopiert wird. Das Argument auf der linken Seite ist die Quelldatei, während das Argument auf der rechten Seite die Zieldatei ist.

3. So kopieren Sie mehrere Dateien in das Verzeichnis

Bisher haben wir nur mit einer einzigen Datei und dem aktuellen Arbeitsverzeichnis gearbeitet. In der realen Produktionsumgebung müssen wir jedoch mit einer großen Anzahl von Dateien arbeiten. Einer der häufigsten Anwendungsfälle in solchen Umgebungen ist das Kopieren mehrerer Dateien in ein einzelnes Verzeichnis.

Natürlich können wir den Befehl cp mehrmals ausführen, um dies zu erreichen, aber das ist nicht der effektivste Weg. Um eine solche Operation effektiv durchzuführen, können wir eine alternative Syntax des Befehls cp verwenden.

Erstellen Sie also zunächst ein neues Verzeichnis mit dem Namen dir-1:

$ mkdir dir-1

Kopieren wir nun alle drei Dateien mit dem einzigen Befehl in das Verzeichnis dir-1:

$ cp -v file-1.txt file-2.txt file-3.txt dir-1

Die obige Ausgabe zeigt, dass alle Dateien in das Verzeichnis dir-1 kopiert wurden. Es ist auch wichtig zu beachten, dass das Verzeichnis bereits vorhanden sein muss, um diese alternative Syntax zu verwenden, und es muss das letzte Argument des Befehls sein.

4. So vermeiden Sie das Überschreiben der Datei

Standardmäßig ersetzt der Befehl cp die Zieldatei, was bedeutet, dass die Datei überschrieben wird, wenn sie am Zielort mit demselben Namen vorhanden ist. Wir können dieses Standardverhalten jedoch mit der Option -n deaktivieren.

Um dies zu verstehen, versuchen wir, die vorhandene Datei zu überschreiben:

$ cp -n -v file-1.txt file-2.txt

In diesem Beispiel haben wir die Option -v verwendet, um zu veranschaulichen, dass die file-2.txt Datei nicht überschrieben wurde.

5. So überschreiben Sie die Datei mit Bestätigung

Im vorherigen Beispiel haben wir gesehen, wie das Überschreiben der Zieldatei vermieden werden kann. Manchmal möchten wir jedoch das Dateiziel auf sicherere Weise überschreiben.

In solchen Fällen können wir die Option -i des Befehls verwenden, um den Kopiervorgang interaktiv zu gestalten. Diese Option zeigt die Warnmeldung an und wartet auf die Bestätigung des Benutzers, bevor die Datei überschrieben wird.

Um dies zu veranschaulichen, versuchen wir, die vorhandene Datei zu überschreiben:

$ cp -i file-1.txt file-2.txt

cp: overwrite 'file-2.txt'?

Wie wir sehen können, wartet der Befehl auf eine Bestätigung. Genau wie bei anderen Linux-Befehlen können wir 'y' verwenden, um fortzufahren, oder 'n', um den Vorgang abzubrechen.

Dieses standardmäßige nicht-interaktive Verhalten des Befehls cp ist nicht sehr sicher. Es besteht die Möglichkeit, dass der Benutzer versehentlich eine wichtige Konfiguration überschreibt. Daher erzwingen einige der Linux-Distributionen das interaktive Verhalten standardmäßig mit dem Alias-Befehl:

$ alias cp='cp -i'

6. Datei nur überschreiben, wenn die Quelle neuer ist

Im vorherigen Beispiel haben wir gesehen, wie der interaktive Modus verwendet wird. Manchmal kann es jedoch vorkommen, dass ein Benutzer die neuere Datei versehentlich überschreibt.

Um solche fehleranfälligen Fälle zu vermeiden, können wir die Option -u verwenden, die den Kopiervorgang nur dann versucht, wenn die Quelle neuer als das Ziel ist oder wenn die Datei am Ziel nicht vorhanden ist.

Aktualisieren Sie zunächst den Zeitstempel der Quelldatei:

$ touch -t 10101010 file-1.txt
ls -l file-1.txt

Im obigen Beispiel haben wir die Option -t des Befehls touch verwendet, um den Zeitstempel der Datei auf den 10. Oktober 2010 festzulegen.

Als Nächstes aktualisieren wir den Zeitstempel der Zieldatei auf die aktuelle Zeit:

$ touch file-2.txt

Versuchen wir nun, den Kopiervorgang mit der Option -u durchzuführen:

$ cp -u -v file-1.txt file-2.txt

Hier können wir sehen, dass der Kopiervorgang nicht versucht wurde, da die Zieldatei neuer als die Quelle ist.

Zum Schluss tauschen wir die Quell- und Zielargumente aus und führen den Kopiervorgang durch:

$ cp -u -v file-2.txt file-1.txt

In der obigen Ausgabe können wir beobachten, dass der Kopiervorgang erfolgreich ist, da die Quelldatei neuer ist als das Ziel.

7. So sichern Sie die Datei vor dem Überschreiben

Wir können den Befehl cp anweisen, eine Sicherungskopie der Zieldatei zu erstellen, bevor wir sie überschreiben. Um dies zu erreichen, können wir die Option --backup verwenden, die automatische Sicherungen durchführt.

$ cp --backup=numbered -v file-1.txt file-2.txt

In diesem Beispiel haben wir die nummerierte Sicherungsrichtlinie verwendet. Diese Richtlinie verwendet inkrementelle Nummern in den Namen der Sicherungsdateien.

Um dies zu verstehen, führen wir denselben Befehl mehrmals aus und beobachten die Ausgabe:

$ cp --backup=numbered -v file-1.txt file-2.txt
cp --backup=numbered -v file-1.txt file-2.txt
cp --backup=numbered -v file-1.txt file-2.txt

8. So erzwingen Sie das Kopieren zum Überschreiben der Datei

In den vorherigen Beispielen haben wir gesehen, wie die Datei auf sicherere Weise überschrieben werden kann. In einigen seltenen Fällen ist es jedoch erforderlich, die Datei zu überschreiben. Es gibt jedoch keine Garantie dafür, dass der Vorgang jedes Mal erfolgreich ist.

Der Kopiervorgang schlägt z. B. fehl, wenn die Zieldatei nicht über die Schreibberechtigungen verfügt. Lassen Sie uns dies an einem Beispiel verdeutlichen.

Ändern Sie zunächst die Berechtigungen der Zieldatei:

$ chmod 444 file-2.txt
ls -l file-2.txt

Versuchen wir nun, die file-2.txt Datei zu überschreiben:

$ cp file-1.txt file-2.txt

In der obigen Ausgabe können wir sehen, dass der Befehl mit dem Fehler "Berechtigung verweigert" fehlgeschlagen ist.

Um diese Einschränkung zu umgehen, können wir die Option -f verwenden, die die Zieldateien löscht und den Kopiervorgang versucht, wenn die Zieldatei nicht geöffnet werden kann.

Lassen Sie uns nun die Option -f verwenden, um die Datei zwangsweise zu überschreiben:

$ cp -f -v file-1.txt file-2.txt

9. So entfernen Sie die Zieldatei vor dem Kopieren

Im vorherigen Beispiel haben wir gesehen, wie die Zieldatei entfernt wird, wenn beim Betrieb ein Fehler auftritt. Manchmal ist es jedoch erforderlich, zuerst die Zieldatei zu entfernen und dann den Kopiervorgang durchzuführen.

Um eine solche Anforderung zu erfüllen, können wir die Option --remove-destination verwenden.

$ cp --remove-destination -v file-1.txt file-2.txt

In der obigen Ausgabe können wir sehen, dass der Befehl cp zuerst die Zieldatei entfernt und dann den Kopiervorgang ausführt.

10. So erstellen Sie eine Hardlink-Datei anstelle des Kopierens

Wir können einen Hardlink erstellen, anstatt eine neue Kopie der Quelldatei zu erstellen. Diese Option spielt eine wichtige Rolle, wenn der Speicherplatz knapp ist.

Verwenden wir also die Option -l, um einen Hardlink zu erstellen:

$ cp -l -v file-1.txt file-4.txt

Lassen Sie uns nun die Inode-Nummern beider Dateien überprüfen, um die harten Links zu überprüfen:

$ ls -i1 file-1.txt file-4.txt

In der obigen Ausgabe stellen die Zahlen in der ersten Spalte die Inode-Nummern dar.

11. So erstellen Sie eine Softlink-Datei anstelle des Kopierens

Auf ähnliche Weise können wir einen Softlink erstellen, anstatt eine neue Kopie zu erstellen, indem wir die Option -s verwenden, wie unten gezeigt:

$ cp -s -v file-1.txt file-5.txt

Lassen Sie uns nun überprüfen, ob der symbolische Link korrekt erstellt wurde:

$ ls -l file-5.txt

In der obigen Ausgabe stellen die letzten Spalten die symbolische Verknüpfungsbeziehung dar.

12. So behalten Sie die Dateiattribute beim Kopieren bei

Der Datei sind verschiedene Attribute zugeordnet, z. B. die Zugriffszeit, die Änderungszeit, die Berechtigungen usw. Standardmäßig werden diese Attribute beim Kopieren der Datei nicht beibehalten. Um dieses Standardverhalten zu überschreiben, können wir die Option -p verwenden.

Um dies zu verstehen, aktualisieren Sie zunächst den Zeitstempel der file-1.txt:

$ touch -t 10101010 file-1.txt

Lassen Sie uns nun eine Kopie dieser Datei erstellen, indem wir alle ihre Attribute beibehalten:

$ cp -p -v file-1.txt file-6.txt

Überprüfen Sie abschließend den Zeitstempel der file-6.txt Datei:

$ ls -l file-6.txt

13. So führen Sie den Kopiervorgang rekursiv durch

Bisher haben wir gesehen, wie man eine einzelne Datei kopiert. Oft müssen wir jedoch alle Dateien und Unterverzeichnisse des jeweiligen Verzeichnisses kopieren.

In solchen Fällen können wir den rekursiven Modus entweder mit der Option -r oder -R verwenden.

Erstellen wir also ein Verzeichnis und fügen wir einige Dateien und Unterverzeichnisse darunter hinzu:

$ mkdir -p dir-1/dir-2
touch dir-1/file-1.txt dir-1/dir-2/file-2.txt

Überprüfen Sie als Nächstes, ob die Verzeichnisstruktur korrekt erstellt wurde:

$ tree dir-1

Kopieren wir nun das Verzeichnis dir-1 rekursiv mit dem folgenden Befehl:

$ cp -r -v dir-1 dir-3

Überprüfen Sie abschließend, ob alle Dateien und Unterverzeichnisse erfolgreich kopiert wurden:

$ tree dir-3

14. So kopieren Sie mehrere Verzeichnisse

Ähnlich wie bei Dateien können wir mehrere Verzeichnisse rekursiv mit einem einzigen Befehl kopieren. Um dies zu erreichen, muss das Zielverzeichnis jedoch bereits vorhanden sein und es muss das letzte Argument im Befehl sein. Lassen Sie uns dies anhand eines Beispiels verstehen.

Erstellen Sie zunächst ein Verzeichnis in einem neuen Verzeichnis:

$ mkdir dir-4

Kopieren wir nun die Verzeichnisse dir-1 und dir-3 in das Verzeichnis dir-4 mit dem folgenden Befehl:

$ cp -r -v dir-1 dir-3 dir-4

Auf ähnliche Weise können wir die Option -t des Befehls verwenden, um das gleiche Ergebnis zu erzielen. Mit dieser Option können wir das Zielverzeichnis angeben. Wir können es also auch als erstes Argument verwenden:

$ cp -t dir-4 -r -v dir-1 dir-3

In diesem Artikel haben wir besprochen, wie Sie Dateien und Verzeichnisse mit dem Befehl cp kopieren. Einsteiger können sich im Alltag bei der Arbeit mit Linux-Systemen auf diese Beispiele beziehen.

Kennen Sie ein anderes bestes Beispiel für den Befehl cp unter Linux? Teilen Sie uns Ihre Meinung in den Kommentaren unten mit. :

Verwandte Artikel: