Kurz: In dieser leicht verständlichen Anleitung werden wir einige praktische Beispiele des cp-Befehls besprechen. Nachdem Sie diese Anleitung befolgt haben, können Benutzer Dateien und Verzeichnisse unter Linux einfach über die Befehlszeilenschnittstelle kopieren.
Als Linux-Benutzer interagieren wir mit dem Dateien und Verzeichnisse von Zeit zu Zeit. Eine häufige Operation, die Benutzer ausführen, ist 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 von vgl Befehl aufgrund seiner Einfachheit und reichhaltigen Funktionalität.
In diesem anfängerfreundlichen Leitfaden erfahren wir mehr über die vgl Befehl. Wie der Name schon sagt, die cp-Befehl wird verwendet, um Dateien und Verzeichnisse unter einem bestimmten Pfad zu kopieren.
In diesem Handbuch werden wir die Verwendung von verstehen cp-Befehl anhand praktischer und alltagstauglicher Beispiele.
Also lasst uns anfangen.
Inhaltsverzeichnis
Die Syntax der vgl Der Befehl ist identisch mit anderen Linux-Befehlen. Auf hohem Niveau ist es in zwei Teile geteilt – Optionen Und Argumente:
$ cp [OPTIONEN]$ cp [OPTIONEN] ...
In der obigen Syntax die eckigen Klammern ([])
stellen die optionalen Argumente dar, während spitze Klammern (<>)
stellen die obligatorischen Argumente dar.
Einer der grundlegenden Verwendungszwecke der vgl Der Befehl besteht darin, eine Datei in ein aktuelles Verzeichnis zu kopieren. Meistens führen Benutzer diesen Vorgang aus, um eine Sicherungskopie der wichtigen Konfiguration zu erstellen.
Zum Beispiel erstellen wir oft eine Sicherungskopie von /etc/ssh/sshd_config-Datei bevor Sie die SSH-Konfiguration aktualisieren.
Um die Verwendung zu verstehen, erstellen wir eine einfache Datei:
$ touch file-1.txt.
Als nächstes erstellen Sie eine Kopie der Datei mit dem folgenden Befehl:
$ cp Datei-1.txt Datei-2.txt.
Im vorherigen Beispiel haben wir die verwendet ls-Befehl 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 aktivieren -v
Option, die Diagnosen für jede verarbeitete Datei bereitstellt.
Lassen Sie uns eine Kopie davon erstellen Datei-1.txt Datei mit dem folgenden Befehl:
$ cp -v Datei-1.txt Datei-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.
Bisher haben wir nur mit einer einzigen Datei und dem aktuellen Arbeitsverzeichnis gearbeitet. In der realen Produktionsumgebung müssen wir jedoch mit a arbeiten große Anzahl von Dateien. Einer der häufigsten Anwendungsfälle in solchen Umgebungen ist das Kopieren mehrerer Dateien in ein einziges Verzeichnis.
Natürlich können wir den cp-Befehl mehrmals ausführen, um dies zu erreichen, aber das ist nicht der effektivste Weg. Um eine solche Operation effektiv auszuführen, können wir eine alternative Syntax des cp-Befehls verwenden.
So zuerst, ein neues Verzeichnis erstellen mit dem Namen dir-1:
$ mkdir dir-1.
Kopieren wir nun alle drei Dateien in die dir-1 Verzeichnis mit dem einzigen Befehl:
$ cp -v Datei-1.txt Datei-2.txt Datei-3.txt dir-1.
Die obige Ausgabe zeigt, dass alle Dateien in die kopiert wurden dir-1 Verzeichnis. Beachten Sie außerdem, dass das Verzeichnis zur Verwendung dieser alternativen Syntax bereits vorhanden und das letzte Argument des Befehls sein muss.
Standardmäßig ist die vgl Der Befehl ersetzt die Zieldatei, was bedeutet, dass er die Datei überschreibt, wenn sie am Ziel mit demselben Namen vorhanden ist. Wir können dieses Standardverhalten jedoch mithilfe von deaktivieren -N
Möglichkeit.
Um dies zu verstehen, versuchen wir, die vorhandene Datei zu überschreiben:
$ cp -n -v Datei-1.txt Datei-2.txt.
In diesem Beispiel haben wir die verwendet -v
Option zu veranschaulichen, dass die Datei-2.txt Datei wurde nicht überschrieben.
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 verwenden -ich
Option des Befehls, um den Kopiervorgang interaktiv zu machen. 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 Datei-1.txt Datei-2.txt cp: 'file-2.txt' überschreiben?
Wie wir sehen können, wartet der Befehl auf eine Bestätigung. Genau wie andere Linux-Befehle können wir verwenden 'y'
weitermachen bzw 'N'
um den Vorgang abzubrechen.
Dieses standardmäßige nicht interaktive Verhalten der vgl Befehl 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 der Alias-Befehl:
$alias cp='cp -i'
Im vorherigen Beispiel haben wir gesehen, wie man den interaktiven Modus verwendet. Manchmal überschreibt ein Benutzer jedoch versehentlich die neuere Datei.
Um solche fehleranfälligen Fälle zu vermeiden, können wir die verwenden -u
Option, die den Kopiervorgang nur versucht, wenn die Quelle neuer als das Ziel ist oder wenn die Datei am Ziel nicht vorhanden ist.
Aktualisieren Sie zuerst den Zeitstempel der Quelldatei:
$ touch -t 10101010 Datei-1.txt. $ ls -l Datei-1.txt.
Im obigen Beispiel haben wir die verwendet -T
Möglichkeit der Touch-Befehl um den Zeitstempel der Datei zu setzen 10. Oktober 2010.
Als Nächstes aktualisieren wir den Zeitstempel der Zieldatei auf die aktuelle Zeit:
$ berühren Sie Datei-2.txt.
Versuchen wir nun, den Kopiervorgang mit dem auszuführen -u
Möglichkeit:
$ cp -u -v Datei-1.txt Datei-2.txt.
Hier können wir sehen, dass der Kopiervorgang nicht versucht wurde, da die Zieldatei neuer als die Quelle ist.
Lassen Sie uns zum Schluss die Quell- und Zielargumente vertauschen und den Kopiervorgang ausführen:
$ cp -u -v Datei-2.txt Datei-1.txt.
In der obigen Ausgabe können wir beobachten, dass der Kopiervorgang erfolgreich ist, weil die Quelldatei neuer als das Ziel ist.
Wir können die beauftragen vgl Befehl, eine Sicherungskopie der Zieldatei zu erstellen, bevor sie überschrieben wird. Um dies zu erreichen, können wir die verwenden --Sicherung
Option, die automatische Sicherungen durchführt.
$ cp --backup=nummeriert -v Datei-1.txt Datei-2.txt.
In diesem Beispiel haben wir die nummerierte Sicherungsrichtlinie verwendet. Diese Richtlinie verwendet inkrementelle Nummern in den Sicherungsdateinamen.
Um dies zu verstehen, führen wir denselben Befehl mehrmals aus und beobachten die Ausgabe:
$ cp --backup=nummeriert -v Datei-1.txt Datei-2.txt. $ cp --backup=nummeriert -v Datei-1.txt Datei-2.txt. $ cp --backup=nummeriert -v Datei-1.txt Datei-2.txt.
In den vorherigen Beispielen haben wir gesehen, wie die Datei sicherer überschrieben werden kann. In einigen seltenen Fällen ist es jedoch erforderlich, die Datei zu überschreiben. Es gibt jedoch keine Garantie dafür, dass die Operation jedes Mal erfolgreich ist.
Beispielsweise schlägt der Kopiervorgang fehl, wenn die Zieldatei keine Schreibberechtigungen hat. Lassen Sie uns dies an einem Beispiel veranschaulichen.
Ändern Sie zunächst die Berechtigungen der Zieldatei:
$ chmod 444 Datei-2.txt. $ ls -l Datei-2.txt.
Versuchen wir nun, die zu überschreiben Datei-2.txt Datei:
$ cp Datei-1.txt Datei-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 überwinden, können wir die verwenden -F
Option, die die Zieldateien löscht und den Kopiervorgang versucht, wenn die Zieldatei nicht geöffnet werden kann.
Nun verwenden wir die -F
Option zum zwangsweisen Überschreiben der Datei:
$ cp -f -v Datei-1.txt Datei-2.txt.
Im vorherigen Beispiel haben wir gesehen, wie die Zieldatei entfernt wird, wenn während des Betriebs 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 verwenden --remove-destination
Möglichkeit.
$ cp --remove-destination -v Datei-1.txt Datei-2.txt.
In der obigen Ausgabe können wir sehen, dass der Befehl cp zuerst die Zieldatei entfernt und dann den Kopiervorgang durchführt.
Wir können einen festen Link erstellen, anstatt eine neue Kopie der Quelldatei zu erstellen. Diese Option spielt eine wichtige Rolle, wenn der Speicherplatz knapp wird.
Verwenden wir also die -l
Option zum Erstellen eines festen Links:
$ cp -l -v Datei-1.txt Datei-4.txt.
Lassen Sie uns nun die Inode-Nummern beider Dateien überprüfen, um die harten Links zu überprüfen:
$ ls -i1 Datei-1.txt Datei-4.txt.
In der obigen Ausgabe stellen die Zahlen in der ersten Spalte die Inode-Nummern dar.
Auf ähnliche Weise können wir einen Softlink erstellen, anstatt eine neue Kopie mit dem zu erstellen -S
Option wie unten gezeigt:
$ cp -s -v Datei-1.txt Datei-5.txt.
Lassen Sie uns nun überprüfen, ob der symbolische Link korrekt erstellt wurde:
$ ls -l Datei-5.txt.
In der obigen Ausgabe repräsentieren die letzten Spalten die symbolische Linkbeziehung.
Der Datei sind verschiedene Attribute zugeordnet, z. B. Zugriffszeit, Änderungszeit, Berechtigungen usw. Standardmäßig werden diese Attribute beim Kopieren der Datei nicht beibehalten. Um dieses Standardverhalten zu überschreiben, können wir die verwenden -P
Möglichkeit.
Um dies zu verstehen, aktualisieren Sie zunächst den Zeitstempel der Datei-1.txt:
$ touch -t 10101010 Datei-1.txt.
Lassen Sie uns nun eine Kopie dieser Datei erstellen, indem wir alle ihre Attribute beibehalten:
$ cp -p -v Datei-1.txt Datei-6.txt.
Überprüfen Sie abschließend den Zeitstempel der file-6.txt Datei:
$ ls -l Datei-6.txt.
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 dem verwenden -R
oder -R
Möglichkeit.
Erstellen wir also ein Verzeichnis und fügen ein paar 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:
$baum dir-1.
Kopieren wir nun das Verzeichnis dir-1 rekursiv mit dem folgenden Befehl:
$ cp -r -v Verzeichnis-1 Verzeichnis-3.
Überprüfen Sie abschließend, ob alle Dateien und Unterverzeichnisse erfolgreich kopiert wurden:
$ baum dir-3.
Ähnlich wie bei Dateien können wir mit einem einzigen Befehl mehrere Verzeichnisse rekursiv 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 zuerst ein Verzeichnis ein neues Verzeichnis:
$ mkdir dir-4.
Kopieren wir nun die dir-1 Und dir-3 Verzeichnisse in die dir-4 Verzeichnis mit dem folgenden Befehl:
$ cp -r -v Verzeichnis-1 Verzeichnis-3 Verzeichnis-4.
Auf ähnliche Weise können wir die verwenden -T
Option des Befehls, 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 der cp-Befehl. Auf diese Beispiele können Einsteiger im Alltag bei der Arbeit mit Linux-Systemen zurückgreifen.
Das könnte Ihnen auch gefallen:
Kennen Sie ein anderes bestes Beispiel für den cp-Befehl in Linux? Teilen Sie uns Ihre Meinung in den Kommentaren unten mit.