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

Wie kann ich Dateien in einem Ordner in einen anderen Ordner am Linux -Terminal kopieren?
Wenn Sie den Inhalt eines Verzeichnisses in ein anderes kopieren müssen, stehen Ihnen im Fall von Linux viele Werkzeuge zur Verfügung. Welches zu verwenden? Es hängt von der Situation und der persönlichen Präferenz ab. In diesem Artikel sehen wir uns an, wie Sie den Dateiinhalt von einem Ordner in das Terminal von einem Ordner kopieren können. Es wird einige der beliebten Auswahlmöglichkeiten für verschiedene Situationen enthalten.

Dateikopie 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 auf Ubuntu 18 demonstriert.04.1. Lassen Sie uns zunächst eine Handvoll Dummy -Dateien erstellen, mit denen wir arbeiten können.

$ mkdir -v dir_a

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

$ Touch Dummy 1… 10

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

$ mkdir -v dir_b
$ Touch Dummy 1… 10

Jetzt sieht die gesamte Struktur des Verzeichnisses Dir_a so aus.

$ Tree Dir_a

CP -Befehl

Der CP Der Befehl ist bei weitem das häufigste Tool zum Kopieren von Dateien. Es ist ein Tool, das standardmäßig bei jedem Linux -System einhergeht. Kopieren von Dateien und Verzeichnissen ist der einzige Zweck von CP. Es unterstützt eine breite Palette von Funktionen.

Dies ist die Grundstruktur der CP Befehl.

$ cp

Lassen Sie uns zum Beispiel eine Kopie des Dummy1 Datei mit dem Namen Dummy1_Copy.

$ CP Dummy1 Dummy1_Copy

Versuchen wir nun, mehrere Dateien gleichzeitig zu kopieren. Für einen solchen Betrieb verlangt CP, dass das Ziel ein Verzeichnis ist. Hier benutze ich den Wildcard -Ausdruck, um alle zu schnappen Dummy Dateien und stecken Sie sie in die ~/Downloads Verzeichnis.

$ CP Dummy* ~/Downloads

Wie wäre es mit dem Kopieren eines Verzeichnisses?

$ cp -vr DIR_A DIR_A_COPY

Hier haben wir zwei verschiedene Flaggen verwendet. Lassen Sie uns einen kurzen Zusammenbruch von ihnen haben.

  • -R: steht für a rekursiv Kopieren (einschließlich aller versteckten Dateien)). Must-Have Flag, wenn das Kopieren ein ganzes Verzeichnis oder mehr beinhaltet.
  • -V: steht für ausführlich. Das CP -Tool gibt jede einzelne Aktion aus, die es ausführt.

Willst du den symbolischen Links folgen? Fügen Sie die Flag "-l" hinzu.

$ cp -lvr

Nehmen wir an, das Zielverzeichnis hat bereits eine Datei mit demselben Namen. Wenn Sie ein Überschreiben vermeiden möchten, verwenden Sie die Flag „-n“. Es wird sicherstellen, dass CP im Falle eines Konflikts die Datei nicht überschreibt.

$ cp -nv

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

$ cp -i

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

$ MAN 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 CP.

$ mv

Um den Inhalt von zu bewegen Dir_a Zu DIR_A_COPY, Führen Sie den folgenden Befehl aus.

$ MV -v DIR_A/ DIR_A_COPY

Hier ist die "-v" -Fahne für ausführlich Modus. Wenn Sie nur den Inhalt von dir_a verschieben möchten, verwenden Sie stattdessen die folgende. In diesem Fall muss das Zielverzeichnis im Voraus existieren.

$ MV -v DIR_A/* DIR_A_COPY

Das MV -Tool hat nicht viel zu arbeiten. Für alle verfügbaren Optionen finden Sie die Mannseite.

$ MAN MV

RSYNC -Befehl

Dies ist eines der beliebtesten und leistungsstärksten Tools für das Kopieren von Dateien, die hauptsächlich für die Sicherung verwendet werden. Es bietet die Möglichkeit, Dateien über eine Remote -Verbindung zu kopieren. Im Gegensatz zu CP und MV verfügt es auch über eine Menge erweiterter Dateikopieroptionen, die die größte Anpassung seines Verhaltens bieten.

RSYNC ist meistens berühmt für seinen Delta-Transfer-Algorithmus, der die Datenmenge drastisch reduziert, die ausgetauscht werden müssen. Im Falle der Fernsynchronisierung spart dies viel Bandbreite.

RSYNC wird in einer Linux-Distribution im Allgemeinen nicht vorinstalliert. Aufgrund seiner Popularität ist es jedoch jetzt auf allen wichtigen Linux -Distributionen erhältlich. Verwenden Sie PKGs.Org, um das RSYNC -Paket für Ihre Distribose herauszufinden. Angenommen, Sie haben RSYNC installiert, lassen Sie uns loslegen.

Erstens die grundlegende Befehlsstruktur von RSYNC. Es ist CP ziemlich ähnlich.

$ rsync

Vor dem Start finden Sie hier eine Handvoll beliebter RSYNC -Argumente.

  • -v: Der ausführliche Modus gibt die Aktion aus, die auf dem Konsolenbildschirm ausgeführt wird.
  • -VV: Ausführlicher Modus mit weiteren Details
  • -R: Rekursiver Modus muss vorhanden sein, wenn Verzeichnisse kopieren
  • -z: Komprimierende Daten
  • -A: Archivdaten
  • -N: Dry Run, sollte in Kombination mit dem ausführlichen Modus ausgeführt werden. Gibt einfach die Aktionen aus, wenn der Befehl real ausgeführt wurde
  • -löschen: Löschen Sie die Dateien (en) und Verzeichnisse (n) im Zielverzeichnis, wenn das Quellverzeichnis sie nicht länger enthält
  • -Nichts: Erzwingt rsync, seinen Delta -Übertragungsalgorithmus zu verwenden, egal was passiert. Nützlich in Szenarien, in denen Sie die geringste Menge an Daten schreiben müssen.
  • -Die Source-Datei entfernen: Löschen Sie Quelldateien nach dem Kopieren.

Schauen wir sie uns in Aktion an. Erstens die Verzeichniskopie. Führen Sie den folgenden Befehl aus.

$ rsync -vr dir_a/ dir_a_copy

Für weitere detaillierte Ausgaben verwenden wir die Flag „-VV“.

$ rsync -vv -r dir_a/ dir_a_copy

Schauen wir uns nun den coolen Teil von RSYNC an. Wir haben besprochen, wie RSYNC nur die geänderten Dateien kopiert, die Bandbreite und Festplatten schreiben. Es ist Zeit, es in Aktion zu überprüfen. In diesem Beispiel wird die Aktion innerhalb der durchgeführt Dir_a Verzeichnis.

$ RSYNC -VV-NO-GOOLE-Datei Dummy* Dir_b/

Trotz der Aktivierung von Delta-Übertragungen kann RSYNC es möglicherweise nicht anwenden, wenn Sie lokale Datenübertragung durchführen.

Schauen wir uns nun die Dry Run -Funktion an. Bevor Sie einen RSYNC -Befehl für Real ausführen, ist es immer wichtig, dass Sie ihn vorher testen. Hier kommt der Trockenlauf ins Spiel. RSYNC wird ausgeben, was passieren wird, wenn der Befehl tatsächlich ausgeführt wurde.

$ rsync -anvr dir_a/ dir_a_copy

RSYNC kann auch mit Remote -Verzeichnissen arbeiten, kein Problem. Alles, was es benötigt, ist eine ordnungsgemäße SSH -Verbindung mit konfigurierten SSH -Tasten.

$ rsync

Ich möchte einen Umzugsoperation durchführen? Um dies in die Perspektive von RSYNC zu setzen, kopiert RSYNC den Inhalt des Quellverzeichnisses und löscht dann den Quellinhalt.

$ rsync -v-remove-source-files

Schauen Sie sich das Ergebnis der Operation an.

$ Tree Dir_a
$ Tree Dir_a_copy

Abschließende Gedanken

CP und RSYNC sind die häufigsten Tools, die Sie zum Kopieren von Dateien in einem Ordner am Linux -Terminal verwenden können. Beide sind auch sehr gut zum Scripting. Stellen Sie einfach sicher, dass Sie die Funktionen vor der Implementierung testen.

Genießen!