Kopieren Sie Dateien und erstellen Sie gleichzeitig Zielverzeichnisse unter Linux
Normalerweise kopieren wir Dateien von einem Speicherort an einen anderen vorhandenen Speicherort mit Befehlen wie cp
, rsync
und scp
usw. Wenn dies beim Zielspeicherort nicht der Fall ist existiert, erstellen wir es zuerst und kopieren dann die Datei an den neu erstellten Speicherort. Bisher kopiere ich Dateien normalerweise über die Befehlszeile von einem Speicherort an einen anderen. Wussten Sie, dass wir eine Datei kopieren und das Zielverzeichnis automatisch erstellen können, wenn es nicht existiert? NEIN? Kein Problem! In dieser Anleitung erfahren Sie, wie Sie unter Linux mit einem einzigen Befehl Dateien kopieren und gleichzeitig Zielverzeichnisse erstellen.
Bitte beachten Sie, dass ich nicht über die Kombination zweier Befehle spreche. Dies könnte beispielsweise jeder tun, indem er zwei Befehle wie den folgenden kombiniert:
mkdir -p destination && cp source_file destination
Dies ist jedoch kein einzelner Befehl. Hier haben wir zwei Befehle verwendet, nämlich mkdir
und cp
. Es handelt sich eigentlich um einen einzeiligen Befehl. Lassen Sie mich nun zeigen, wie Sie dieselbe Aufgabe mit nur einem Befehl ausführen können.
Kopieren Sie Dateien und erstellen Sie gleichzeitig Zielverzeichnisse unter Linux
Wir können dies auf drei verschiedene Arten tun. Zuerst werden wir sehen, wie man das mit dem Befehl install
macht.
Methode 1 – Verwendung des Befehls install
Der Befehl install
kopiert die Dateien an ein beliebiges Ziel Ihrer Wahl unter Linux. Es wird speziell für diesen Zweck von Build-Systemen wie automake
verwendet. Es ist Teil der GNU-Coreutils und muss daher nicht installiert werden.
Um eine Datei zu kopieren und gleichzeitig das Zielverzeichnis mit dem Befehl install
zu erstellen, führen Sie einfach Folgendes aus:
install -D source-file destination-directory
Beispiel:
Der folgende Befehl kopiert eine Datei mit dem Namen sk.txt
in ein Zielverzeichnis mit dem Namen ostechnix
. Bitte beachten Sie, dass das Zielverzeichnis nicht existiert. Wir werden die Datei kopieren und gleichzeitig das Zielverzeichnis mit dem Befehl install
wie folgt erstellen:
install -D sk.txt ostechnix/sk.txt
Überprüfen Sie, ob die Datei in das Verzeichnis ostechnix
kopiert wurde, indem Sie ihren Inhalt mit dem Befehl ls
auflisten:
ls ostechnix/
sk.txt
Kopieren Sie eine Datei und erstellen Sie gleichzeitig ein Zielverzeichnis mit dem Installationsbefehl
Sehen? Ich habe das Zielverzeichnis vorher nicht erstellt. Der Installationsbefehl hat das Verzeichnis automatisch erstellt und die Datei darin gespeichert.
Praktisch, oder? In der Tat! Dies ist eine der nützlichen Funktionen des Befehls install
. Man kann dies in Shell-Skripten verwenden.
Bei dieser Methode gibt es einige Einschränkungen. Sie müssen den Namen der Quelldatei am Ende des Zielspeicherorts angeben. Wenn Sie den Dateinamen nicht angeben, kopiert der Befehl install
ihn nicht und zeigt die folgende Fehlermeldung an:
install -D sk.txt ostechnix/
install: target 'ostechnix/' is not a directory: No such file or directory
Sie können jeweils eine Datei kopieren. Es gibt keine Möglichkeit, mehrere Dateien mit dem Befehl install
an mehrere Ziele zu kopieren.
Wir können auch Dateien kopieren und gleichzeitig den Besitz und die Berechtigungen ändern, indem wir den Befehl install
verwenden, wie in der folgenden Anleitung beschrieben.
- So kopieren Sie Dateien und ändern gleichzeitig den Besitz und die Berechtigungen
Weitere Einzelheiten zum Installationsbefehl finden Sie auf der entsprechenden manuellen Seite.
man instal
l
Methode 2 – Verwendung des Befehls cp
Im Allgemeinen verwenden wir den Befehl cp
, um Dateien von einem Ort an einen anderen zu kopieren. Der Befehl cp
verfügt über eine Option namens --parents
, die es uns ermöglicht, die gesamte Verzeichnisstruktur der Quelldatei zu kopieren und im Ziel zu speichern.
Nehmen wir zum Beispiel an, dass die Datei sk.txt
im Verzeichnis ~/Downloads
gespeichert ist und Sie sie nach ~/Documents
kopieren möchten Verzeichnis. Wenn Sie die Datei mit dem Befehl cp
von ~/Downloads
nach ~/Documents
kopieren, wird die Datei in einer Verzeichnisstruktur wie dieser -> gespeichert ~/Documents/Downloads/sk.txt
.
Lassen Sie es uns in Echtzeit tun und sehen, was passiert.
cp --parents Downloads/sk.txt ~/Documents/
Führen Sie nun den Befehl tree
aus, um den Inhalt des Verzeichnisses ~/Documents
zu überprüfen:
tree Documents/
Documents/
└── Downloads
└── sk.txt
1 directory, 1 file
Kopieren Sie eine Datei und erstellen Sie gleichzeitig ein Zielverzeichnis mit dem Befehl cp
Denken Sie daran, dass wir innerhalb des Speicherorts ~/Documents
keine Verzeichnisse erstellt haben. Die Option --parents
des Befehls cp
bewahrte die Verzeichnisstruktur der Quelldatei.
Im Gegensatz zum Befehl install
müssen Sie den Dateinamen nicht am Ende des Zielverzeichnisses angeben.
Dies hat nicht direkt mit unserem Thema zu tun. Allerdings hat der Befehl cp
die Zielverzeichnisse automatisch erstellt, d. h. die Verzeichnisstruktur der Quelldatei beibehalten.
Methode 3 – Verwendung des Befehls rsync
Rsync
ist eine ideale Lösung zum Kopieren und Sichern von Daten zwischen lokalen und Remote-Verzeichnissen. Um Dateien zu kopieren und gleichzeitig Zielverzeichnisse mit dem Befehl rsync zu erstellen, führen Sie Folgendes aus:
rsync sk.txt ostechnix/
Wobei das Verzeichnis mit dem Namen ostechnix
nicht existieren muss. Rsync erstellt es automatisch und speichert die Quelldatei darin.
Kopieren Sie eine Datei und erstellen Sie gleichzeitig ein Zielverzeichnis mit dem Befehl rsync
Unter diesen drei Befehlen bevorzuge ich den Befehl install
. Denn ich kann mit dem Befehl install
verschachtelte Verzeichnisse (Verzeichnisse innerhalb eines anderen Verzeichnisses) erstellen. Die Befehle cp
und rsync
können meines Wissens nur ein Verzeichnis erstellen. Bitte korrigieren Sie mich, wenn ich falsch liege.
Verwandte Lektüre:
- So bleiben Eigentums- und Dateiberechtigungen beim Kopieren von Dateien oder Verzeichnissen erhalten