Normalerweise kopieren wir Dateien mit Befehlen wie cp
von einem Ort an einen anderen bestehenden Ort , rsync
, und scp
usw. Wenn der Zielspeicherort nicht existiert, erstellen wir ihn zuerst und kopieren dann die Datei an diesen neu erstellten Speicherort. Bisher kopiere ich auf diese Weise normalerweise Dateien von einem Ort zum anderen über die Befehlszeile. 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 gleichzeitig Dateien kopieren und Zielverzeichnisse erstellen.
Bitte beachten Sie, dass ich nicht davon spreche, zwei Befehle zu kombinieren. Beispielsweise könnte jeder dies tun, indem er zwei Befehle wie unten 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 ist eigentlich ein Einzeiler-Befehl. Lassen Sie mich nun zeigen, wie man dieselbe Aufgabe mit nur einem Befehl erledigt.
Dateien kopieren und gleichzeitig Zielverzeichnisse erstellen in Linux
Wir können dies mit drei verschiedenen Methoden tun. Zuerst werden wir sehen, wie man es mit install
macht Befehl.
Methode 1 - mit install
Befehl
Die install
Der Befehl kopiert die Dateien an ein beliebiges Ziel Ihrer Wahl in Linux. Es wird speziell für diesen Zweck von Build-Systemen wie automake
verwendet . Es ist Teil von GNU Coreutils, also brauchen Sie es nicht zu installieren.
Um eine Datei zu kopieren und gleichzeitig das Zielverzeichnis zu erstellen, verwenden Sie install
Befehl einfach ausführen:
$ install -D source-file destination-directory
Beispiel:
Der folgende Befehl kopiert eine Datei namens sk.txt
in ein Zielverzeichnis namens ostechnix
. Bitte beachten Sie, dass das Zielverzeichnis nicht existiert. Wir werden die Datei kopieren und gleichzeitig das Zielverzeichnis mit install
erstellen Befehl wie unten:
$ install -D sk.txt ostechnix/sk.txt
Überprüfen Sie, ob die Datei in das ostechnix
kopiert wurde Verzeichnis, indem Sie dessen Inhalt mit ls
auflisten Befehl:
$ ls ostechnix/
sk.txt
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 von install
Befehl. 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, install
Befehl wird es nicht kopieren und den folgenden Fehler anzeigen:
$ 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 install
an mehrere Ziele zu kopieren Befehl.
Wir können auch Dateien kopieren und gleichzeitig den Besitz und die Berechtigungen ändern, indem wir install
verwenden Befehl, 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 Handbuchseite.
$ man install
Methode 2 - mit cp
Befehl
Im Allgemeinen verwenden wir cp
Befehl zum Kopieren von Dateien von einem Ort zum anderen. Der cp
Befehl hat eine Option namens --parents
Dadurch können wir die gesamte Verzeichnisstruktur der Quelldatei kopieren und im Ziel speichern.
Sagen wir zum Beispiel die sk.txt
Datei wird in ~/Downloads
gespeichert Verzeichnis und Sie wollten es nach ~/Documents
kopieren Verzeichnis. Wenn Sie die Datei mit cp
kopieren Befehl von ~/Downloads
nach ~/Documents
, wird die Datei in der folgenden Verzeichnisstruktur 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 tree
aus Befehl zum Überprüfen von ~/Documents
Inhalt des Verzeichnisses:
$ tree Documents/
Documents/
└── Downloads
└── sk.txt
1 directory, 1 file
Denken Sie daran, dass wir keine Verzeichnisse innerhalb von ~/Documents
erstellt haben Lage. Die --parents
Option des cp
Der Befehl hat die Verzeichnisstruktur der Quelldatei beibehalten.
Im Gegensatz zu install
Befehl müssen Sie den Dateinamen am Ende des Zielverzeichnisses nicht angeben.
Das hat nicht direkt mit unserem Thema zu tun. Der cp
Der Befehl hat die Zielverzeichnisse automatisch erstellt, d. h. die Verzeichnisstruktur der Quelldatei beibehalten.
Methode 3 - mit rsync
Befehl
Rsync
ist eine ideale Lösung zum Kopieren und Sichern von Daten zwischen lokalen und entfernten Verzeichnissen. Um Dateien zu kopieren und gleichzeitig Zielverzeichnisse mit dem Befehl rsync zu erstellen, führen Sie Folgendes aus:
$ rsync sk.txt ostechnix/
Wo das Verzeichnis namens ostechnix
muss nicht vorhanden sein. Rsync erstellt es automatisch und speichert die Quelldatei darin.
Von diesen drei Befehlen bevorzuge ich install
Befehl. Weil ich mit install
verschachtelte Verzeichnisse (Verzeichnisse in einem anderen Verzeichnis) erstellen kann Befehl. Der cp
und rsync
Befehle können meines Wissens nur ein Verzeichnis erstellen. Bitte korrigieren Sie mich, wenn ich falsch liege.
Verwandte Lektüre:
- So behalten Sie Eigentums- und Dateiberechtigungen beim Kopieren von Dateien oder Verzeichnissen bei