Kommandozeile Schnellstart – cp Copy

Übersicht:

Willkommen zur Lektion zum Thema cp - copy.

Es gibt einige verschiedene elementare Operationen auf Dateisystemebene und das Kopieren von Dateien ist sicher eine der wichtigsten davon. Im Folgenden wollen wir uns den cp-Befehl (kurz für copy, zu deutsch "kopieren") und seine verschiedenen Optionen ansehen.

An dieser Stelle etwas erweitertes Hintergrundwissen:

Je nachdem auf welchem Betriebssystem du arbeitest, kann cp unterschiedlich implementiert sein. MacOS X basiert auf der BSD-Implementierung, während cp in Linux der GNU-Implementierung entspricht. Lass dich davon aber zunächst nicht abschrecken: Alle wichtigen Funktionen bleiben gleich. Wenn du genaueres über die Unterschiede wissen willst, empfiehlt sich immer ein Studium der entsprechenden man-pages (kurz für Anleitungssystem), die du mit dem Befehl man cp aufrufen kannst.

Anwendung und Syntax:

Wie der Name von cp schon vermuten lässt, nutzt man cp um Dateien zu kopieren. Die grundsätzliche Syntax von cp ist dabei sehr einfach:

 cp <Quelle> <Ziel>

Unter unixoiden Systemen (zu denen zählen sowohl BSD, als auch Linux) wird dabei nicht zwischen Links und einzelnen Dateien unterschieden. Der cp Befehl kopiert alle gleich. Für Quelle und Ziel sind dabei nicht nur Dateinamen, sondern auch Pfade möglich. Wir wollen uns dazu einige Beispiele ansehen:

 cp test.txt test2.txt

Dieser Befehl kopiert die Datei test.txt im aktuellen Ordner in eine neue Datei namens test2.txt im selben Ordner.

 cp test.txt ../test.txt

Dieser Befehl kopiert die Datei test.txt im aktuellen Ordner in eine neue Datei namens test.txt im übergeordneten Ordner.

 cp /root/* .

Dieser Befehl kopiert alle Dateien aus dem Verzeichnis /root in das aktuelle Verzeichnis.

 cp -R /root/ /home/test

Dieser Befehl kopiert das Verzeichnis namens /root nach /home/test. Um ein Verzeichnis zu kopieren, wird der Parameter r (oder ein äquivalenter Parameter, dazu später mehr) benötigt.

Parameter

Der copy-Befehl hat eine sehr große Anzahl an Parametern, die einem das Leben erleichtern können. Eine vollständige Aufstellung dieser Parameter findest du in der man-page. Wir wollen an dieser Stelle nur die wichtigsten vorstellen:

-R: Der Parameter R steht dabei für rekursives Kopieren. Rekursiv bedeutet, dass beim Kopieren auch Verzeichnisse sowie deren Inhalte (inklusive weiterer Unterverzeichnisse) berücksichtigt werden. Zudem werden durch den Parameter -R symbolische Links nicht weiter verfolgt.

-a: Wird der Parameter a verwendet, werden die Attribute der zu kopierenden Dateien beim Kopieren nicht verändert.

-f: Der Parameter f steht für force und dient dazu, die beim Kopiervorgang potentiell nötige Bestätigung des Benutzers zu umgehen

-i: Das Standardverhalten von cp ist es, gleichnamige Dateien am Zielort zu überschreiben. Der Parameter -i steht für interaktives Kopieren. Dadurch wird, falls beim Kopieren eine Datei überschrieben wird, eine Benutzereingabe angefordert.

Übungen:

  1. Kopiere die Datei test.txt in eine Datei namens test2.txt:
     cp codes/test.txt test2.txt
  2. Kopiere die Datei test2.txt in eine Datei namens test3.txt im Unterordner subdir:
     cp test2.txt codes/subdir/test3.txt
  3. Kopiere den Unterordner subdir in einen Unterordner namens subdir2:
     cp -R codes/subdir subdir2

Denke dran, dass du mit dem ls-Befehl die Inhalte eines Verzeichnisses überprüfen kannst!

Zusammenfassung:

Der Befehl cp bzw. copy ist einer der wichtigsten Befehle auf der Kommandozeile. Mit ihm können Dateien und Verzeichnisse an beliebige Stellen im Dateisystem kopiert werden. Da cp in der Standardeinstellung Dateien am Zielort überschreibt, ist es für dich wichtig, genau zu wissen, was du wohin kopieren willst.