Wie kann ich Dateien in einem Ordner in einen anderen Ordner auf dem Linux-Terminal kopieren?

How Can I Copy Files Folder Into Another Folder Linux Terminal



Wenn Sie den Inhalt eines Verzeichnisses in ein anderes kopieren müssen, stehen Ihnen im Fall von Linux viele Tools zur Verfügung. Welches zu verwenden? Es hängt von der Situation und den persönlichen Vorlieben ab. In diesem Artikel werden wir uns ansehen, wie Sie Dateiinhalte im Terminal von einem Ordner in einen anderen kopieren können. Es enthält einige der beliebtesten Optionen für verschiedene Situationen.

Kopieren von Dateien im Terminal

Das Kopieren des Inhalts eines Verzeichnisses in ein anderes ist eine sehr einfache Aufgabe. Sie haben jedoch viele Möglichkeiten, dies zu tun. Linux ist mit zahlreichen Tools gesegnet, um Dateien und Verzeichnisse durch verschiedene Aktionen zu manipulieren.







Alle Schritte werden unter Ubuntu 18.04.1 demonstriert. Lassen Sie uns zunächst eine Handvoll Dummy-Dateien erstellen, mit denen Sie arbeiten können.



$mkdir -vdir_A



Lassen Sie uns nun die Dummy-Dateien mit Touch erstellen.





$berührenAttrappe{1..10}

Erstellen wir einen weiteren Ordner in dir_A mit einer Handvoll Dummy-Dateien.



$mkdir -vdir_B
$berührenAttrappe{1..10}

Nun sieht die gesamte Struktur des Verzeichnisses dir_A so aus.

$Baumdir_A

Cp-Befehl

Die cp Befehl ist bei weitem das gebräuchlichste Werkzeug zum Kopieren von Dateien. Es ist ein Tool, das standardmäßig mit jedem Linux-System geliefert wird. Das Kopieren von Dateien und Verzeichnissen ist der alleinige Zweck von cp. Es unterstützt eine Vielzahl von Funktionen.

Dies ist die Grundstruktur der cp Befehl.

$cp <Optionen> <Quelle> <Ziel>

Machen wir zum Beispiel eine Kopie von dummy1 Datei mit dem Namen dummy1_copy .

$cpdummy1 dummy1_copy

Versuchen wir nun, mehrere Dateien gleichzeitig zu kopieren. Für eine solche Operation erfordert cp, dass das Ziel ein Verzeichnis ist. Hier verwende ich Platzhalterausdrücke, um alle zu erfassen Attrappe Dateien und legen Sie sie in die ~/Downloads Verzeichnis.

$cpAttrappe*~/Downloads

Wie wäre es, ein Verzeichnis zu kopieren?

$cp -vrdir_A dir_A_copy

Hier haben wir zwei verschiedene Flags verwendet. Lassen Sie uns sie kurz aufschlüsseln.

  • -r: Steht für a rekursiv kopieren (einschließlich aller versteckten Dateien). Must-have-Flag, wenn das Kopieren ein ganzes Verzeichnis oder mehr umfasst.
  • -v: Steht für ausführlich . Das cp-Tool gibt jede einzelne Aktion aus, die es ausführt.

Möchten Sie den symbolischen Links folgen? Fügen Sie das Flag -L hinzu.

$cp -Lvr <Quelle> <Ziel>

Nehmen wir an, das Zielverzeichnis enthält bereits eine Datei mit demselben Namen. Wenn Sie das Überschreiben vermeiden möchten, verwenden Sie das Flag -n. Es stellt sicher, dass cp im Konfliktfall die Datei nicht überschreibt.

$cp -nv <Quelle> <Ziel>

Wenn Sie eine sensible Kopier- / Einfügeaktion ausführen, ist es besser, die beste Kontrolle darüber zu haben, was passiert, oder? Verwenden Sie in einem solchen Fall das Flag -i. Es steht für einen interaktiven Modus, in dem cp jedes Mal, wenn ein Konflikt auftritt, um eine Bestätigung bittet.

$cp -ich <Quelle> <Ziel>

Wenn Sie mehr interessiert sind, ist die Manpage immer eine der besten Dokumentationen. Erfahren Sie mehr über cp.

$Mann cp

mv-Befehl

Das mv-Tool ähnelt dem cp-Tool. Anstatt zu kopieren, verschiebt mv jedoch Dateien und Verzeichnisse. Im Vergleich zu cp ist es einfacher.

Die Befehlsstruktur von mv ähnelt der von cp.

$mv <Möglichkeit> <Quelle> <Ziel>

Um den Inhalt von zu verschieben dir_A zu dir_A_copy , führen Sie den folgenden Befehl aus.

$mv -vdir_A/dir_A_copy

Hier ist das Flag -v für ausführlich Modus. Wenn Sie nur den Inhalt von dir_A verschieben möchten, verwenden Sie stattdessen den folgenden. In diesem Fall muss das Zielverzeichnis vorher existieren.

$mv -vdir_A/ *dir_A_copy

Das mv-Tool hat nicht viel zu tun. Alle verfügbaren Optionen finden Sie auf der Manpage.

$Mann mv

Rsync-Befehl

Dies ist eines der beliebtesten und leistungsstärksten Tools zum Kopieren von Dateien, das hauptsächlich für Backups verwendet wird. Es enthält die Fähigkeit, Dateien über eine Remote-Verbindung zu kopieren. Im Gegensatz zu cp und mv bietet es auch eine Vielzahl von erweiterten Dateikopieroptionen, die die größtmögliche Anpassung des Verhaltens ermöglichen.

Rsync ist vor allem für seinen Delta-Transfer-Algorithmus bekannt, der die Menge der auszutauschenden Daten drastisch reduziert. Bei der Remote-Synchronisierung spart dies viel Bandbreite.

Rsync ist in der Regel in keiner Linux-Distribution vorinstalliert. Aufgrund seiner Popularität ist es jedoch jetzt auf allen großen Linux-Distributionen verfügbar. Verwenden Pkgs.org um das rsync-Paket für Ihre Distribution herauszufinden. Angenommen, Sie haben rsync installiert, lassen Sie uns beginnen.

Zuerst die grundlegende Befehlsstruktur von rsync. Es ist ziemlich ähnlich zu cp.

$rsync<Optionen> <Quelle> <Ziel>

Bevor Sie beginnen, finden Sie hier eine Handvoll beliebter rsync-Argumente.

  • -v : Ausführlicher Modus, gibt alle Aktionen aus, die auf dem Konsolenbildschirm ausgeführt werden.
  • -vv : Ausführlicher Modus mit mehr Details
  • -R : Rekursiver Modus, muss vorhanden sein, wenn Verzeichnisse kopiert werden
  • -Mit : Daten komprimieren
  • -zu : Daten archivieren
  • -n : Probelauf, sollte in Kombination mit dem ausführlichen Modus ausgeführt werden. Gibt einfach die Aktionen aus, wenn der Befehl wirklich ausgeführt werden soll
  • -löschen : Datei(en) und Verzeichnis(se) im Zielverzeichnis löschen, wenn das Quellverzeichnis sie nicht mehr enthält
  • -keine-ganze-Datei : Zwingt rsync, seinen Delta-Übertragungsalgorithmus zu verwenden, egal was passiert. Nützlich in Szenarien, in denen Sie die geringste Menge an Datenschreibvorgängen sicherstellen müssen.
  • –Quelldatei entfernen : Quelldatei(en) nach dem Kopieren löschen.

Schauen wir sie uns in Aktion an. Zuerst das Verzeichnis kopieren. Führen Sie den folgenden Befehl aus.

$rsync-vrdir_A/dir_A_copy

Für eine weitere detaillierte Ausgabe verwenden wir das Flag -vv.

$rsync-vv -Rdir_A/dir_A_copy

Schauen wir uns nun den coolen Teil von rsync an. Wir haben besprochen, wie rsync auf intelligente Weise nur die Dateien kopiert, die geändert wurden, wodurch Bandbreite und Festplattenschreibvorgänge gespart werden. Es ist Zeit, es in Aktion zu testen. In diesem Beispiel wird die Aktion innerhalb der dir_A Verzeichnis.

$rsync-vv --no-whole-fileAttrappe*dir_B/

Obwohl die Delta-Übertragung aktiviert ist, wendet rsync sie möglicherweise nicht an, wenn Sie eine lokale Datenübertragung durchführen.

Schauen wir uns nun die Probelauffunktion an. Bevor Sie einen rsync-Befehl wirklich ausführen, ist es immer wichtig, dass Sie ihn vorher testen. Hier kommt der Probelauf ins Spiel. Rsync gibt aus, was passiert, wenn der Befehl tatsächlich ausgeführt werden soll.

$rsync-anvrdir_A/dir_A_copy

Rsync kann auch mit Remote-Verzeichnissen arbeiten, kein Problem. Alles, was es braucht, ist eine ordnungsgemäße SSH-Verbindung mit konfigurierten SSH-Schlüsseln.

$ rsync<Möglichkeit> <local_dir>
<Nutzername> @<Remote-Host>:<destination_dir>

Möchten Sie einen Umzugsvorgang durchführen? Um dies in die Perspektive von rsync zu bringen, kopiert rsync den Inhalt des Quellverzeichnisses und löscht dann den Quellinhalt.

$rsync-v --remove-source-files <Quelle> <Ziel>

Sehen Sie sich das Ergebnis der Operation an.

$Baumdir_A

$Baumdir_A_copy

Abschließende Gedanken

cp und rsync sind die gebräuchlichsten Tools, die Sie zum Kopieren von Dateien in einen Ordner auf dem Linux-Terminal verwenden können. Beide sind auch sehr gut zum Scripten geeignet. Stellen Sie sicher, dass Sie die Funktionen vor der Implementierung testen.

Genießen!