Zum Hauptinhalt springen Skip to page footer

Teil 1. Kopieren von Dateien mit der Bash-Shell ( Bourne-again Shell )

Kopieren einzelner oderer mehrerer Dateien mit dem cp Befehl.

Category Coding

Das Kopieren einzelner oder mehrer Dateien stellt eine Routinetätigkeit beim Arbeiten mit der Shell dar. Es gibt zwar mehrere Unix-Tools zum Kopieren, ich verwende jedoch cp ( für copy ) am häufigsten und möchte hier die wichtigsten Anwendungen vorstellen.

Um Dateien überhaupt kopieren zu können, sind eine Leseberechtigung auf die Ausgangsdateien und Lese- und Schreibrecht auf das Zielverzeichnis Voraussetzung.

 

Kopieren von Dateien mit dem cp Befehl

 

1. Kopie im aktuellen Verzeichnis anlegen

 

Den einfachsten Anwendungsfall stellt das Anlegen einer Kopie einer Datei im aktuellen Verzeichnis dar.
Um zum Beispiel die Datei file.txt als file_backup.txt im aktuellen Verzeichnis anzulegen, brauchst Du lediglich den folgenden Befehl auszuführen:

 

cp file.txt file_backup.txt

 

Achtung! Sollte die Zieldatei bereits existieren, wird sie ohne weitere Warnung einfach überschrieben.

Möchtest du das Überschreiben verhindern, kannst Du die -i Option hinzufügen. Existiert die Zieldatei, taucht ein Hinweis auf und der Kopiervorgang abgebrochen.

cp -i file.txt file_backup.txt

 

Die Kopie hat standardgemäss den Benutzer als Eigentümer, der die Kopie angelegt hat. Deine Kopie hat also Deinen User als Besitzer und die Uhrzeit, zu der Du die Kopie erstellt hast, im Zeitstempel stehen. Möchtest Du die Einstellungen der Ausgangsdatei für die Besitzrechte und den Zeitstempel beibehalten, kannst Du das durch Hinzufügen der Option -p.

 

 cp -p file.txt file_backup.txt

 

Ganz praktisch ist auch die Option -v, die Dir vorab anzeigt, welche Schritte beim Ausführen des Befehls cp durchgeführt werden.

 

cp -v file.txt file_backup.txt

Output
‘file.txt’ -> ‘file_backup.txt’

 

Mehrere Optionen können auch mit einem Befehl ausgeführt werden. Die Syntax lautet folgendermaßen:

 

cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file

 

2. Datei in ein anderes Verzeichnis kopieren

 

Zum Kopieren einer Datei in ein anderes Verzeichnis, muss der absolute oder relative Pfad des Zielverzeichnisses angegeben werden. Hast Du keine Berechtigung auf das Zielverzeichnis, wird die Kopie im aktuellen Verzeichnis angelegt.

Im folgenden Beispiel wird die Datei file.txt in das Verzeichnis /backup kopiert:

 

cp file.txt /backup

Hier haben wir nur den Verzeichnisnamen als Ziel angegeben, die Kopie behält den gleichen Namen wie die Originaldatei.
Möchtest Du die Kopie im Zielverzeichnis anders benennen, kannst Du das durch Angabe des neuen Dateinamens:

cp file.txt /backup/new_file.txt

die neue Datei in unserem Beispiel heisst: new_file.txt

 

3. Mehrere Dateien kopieren

 

Wahrscheinlich möchtest Du bei Deinen Arbeiten im Terminal nicht immer alle Dateien in mühseliger Kleinarbeit einzeln kopieren.Gib zuerst die Ausgangsdateien  an und schliesse den Befehl am Ende mit der Angaben des Zielverzeichnisses ab:

cp file.txt file1.txt file2.txt dir1

 

4. Pattern Matching

 

Du kannst auch Pattern Matching beim cp Befehl einsetzten. Möchtest Du z.B. alle Dateien, die auf .png enden in das Verzeichnis /backup kopieren, kannst Du das mit folgendem Befehl ausführen:

cp *.png /backup

 

5. Zusammenfassung

 

cp [optionen] quelle ziel
-a steht für "archive". Von der ursprünglichen Dateistruktur, den Attributen und den zugehörigen Metadaten wird so viel wie möglich erhalten.
-f steht für "force".  Wenn eine vorhandene Zieldatei nicht geöffnet werden kann, wird diese entfernt und der copy Befehl erneut ausgeführt.
-i steht für "interactive". Abbruch des Kopiervorganges, wenn die Zieldate bereits existiert
-p steht für "preserve". Zeitstempel, Besitzer der Quelle werden beibehalten
-v steht für "verbose" und zeigt alles an, was der Befehl cp gerade macht.
-n "no file overwrite"

 

 

...qei