Das Kopieren von Dokumenten erforderte früher einen dedizierten Mitarbeiter in Büros und dann einen dedizierten Computer. Heutzutage ist das Kopieren eine Aufgabe, die Computernutzer ohne weiteres Nachdenken erledigen. Das Kopieren von Daten auf einem Computer ist so trivial, dass Kopien erstellt werden, ohne dass Sie es merken, z. B. wenn Sie eine Datei auf ein externes Laufwerk ziehen.
Das Konzept, dass digitale Entitäten einfach zu reproduzieren sind, ist allgegenwärtig, sodass die meisten modernen Computeristen nicht über die verfügbaren Optionen zum Duplizieren ihrer Arbeit nachdenken. Und doch gibt es verschiedene Möglichkeiten, eine Datei unter Linux zu kopieren. Jede Methode verfügt über nuancierte Funktionen, von denen Sie profitieren können, je nachdem, was Sie erledigen müssen.
Hier sind eine Reihe von Möglichkeiten zum Kopieren von Dateien unter Linux, BSD und Mac.
Kopieren in der GUI
Linux-Container
- Was sind Linux-Container?
- Eine Einführung in die Containerterminologie
- Download:Einführung in Container
- Kubernetes-Operatoren:Automatisierung der Container-Orchestrierungsplattform
- eBook:Kubernetes-Muster zum Entwerfen cloudnativer Apps
- Was ist Kubernetes?
Wie bei den meisten Betriebssystemen können Sie Ihre gesamte Dateiverwaltung in der GUI erledigen, wenn Sie dies bevorzugen.
Ziehen und ablegen
Die naheliegendste Methode zum Kopieren einer Datei ist die Art und Weise, wie Sie es wahrscheinlich gewohnt sind, Dateien auf Computern zu kopieren:Drag-and-Drop. Auf den meisten Linux-Desktops wird das Ziehen und Ablegen von einem lokalen Ordner in einen anderen lokalen Ordner verschoben standardmäßig eine Datei. Sie können dieses Verhalten in einen Kopiervorgang ändern, indem Sie die Strg-Taste gedrückt halten Taste, nachdem Sie mit dem Ziehen der Datei begonnen haben.
Ihr Cursor zeigt möglicherweise einen Indikator an, z. B. ein Pluszeichen, um anzuzeigen, dass Sie sich im Kopiermodus befinden:
Beachten Sie Folgendes:Wenn die Datei auf einem Remotesystem vorhanden ist, sei es ein Webserver oder ein anderer Computer in Ihrem eigenen Netzwerk, auf den Sie über ein Dateifreigabeprotokoll zugreifen, besteht die Standardaktion häufig darin, die Datei zu kopieren, nicht zu verschieben.
Rechtsklick
Wenn Sie das Ziehen und Ablegen von Dateien auf Ihrem Desktop als ungenau oder ungeschickt empfinden oder Ihre Hände zu sehr von der Tastatur nehmen, können Sie eine Datei normalerweise über das Rechtsklickmenü kopieren. Diese Möglichkeit hängt vom verwendeten Dateimanager ab, aber im Allgemeinen erzeugt ein Rechtsklick ein Kontextmenü mit allgemeinen Aktionen.
Die Kopieraktion des Kontextmenüs speichert den Dateipfad (wo die Datei auf Ihrem System vorhanden ist) in Ihrer Zwischenablage, damit Sie sie dann einfügen können die Datei woanders:
In diesem Fall kopieren Sie den Inhalt der Datei nicht wirklich in Ihre Zwischenablage. Stattdessen kopieren Sie den Dateipfad. Beim Einfügen sieht sich Ihr Dateimanager den Pfad in Ihrer Zwischenablage an und führt dann einen Kopierbefehl aus, der die Datei, die sich in diesem Pfad befindet, in den Pfad kopiert, in den Sie einfügen.
Kopieren auf der Kommandozeile
Während die GUI eine allgemein bekannte Methode zum Kopieren von Dateien ist, kann das Kopieren in einem Terminal effizienter sein.
CP
Das offensichtliche Terminal-basierte Äquivalent zum Kopieren und Einfügen einer Datei auf dem Desktop ist cp Befehl. Dieser Befehl kopiert Dateien und Verzeichnisse und ist relativ unkompliziert. Es verwendet die bekannte Quelle und Ziel (streng in dieser Reihenfolge) Syntax, also um eine Datei namens example.txt zu kopieren in Ihre Dokumente Verzeichnis:
$ cp example.txt ~/Dokumente
Genau wie beim Ziehen und Ablegen einer Datei in einen Ordner ersetzt diese Aktion nicht Dokumente mit beispiel.txt . Stattdessen cp erkennt diese Dokumente ist ein Ordner und speichert eine Kopie von example.txt hinein.
Sie können die Datei auch bequem (und effizient) umbenennen, während Sie sie kopieren:
$ cp example.txt ~/Documents/example_copy.txt
Diese Tatsache ist wichtig, da Sie damit eine Kopie einer Datei im selben Verzeichnis wie das Original erstellen können:
$ cp example.txt example.txt
cp:'example.txt' und 'example.txt' sind die gleiche Datei.
$ cp example.txt example_copy.txt
Um ein Verzeichnis zu kopieren, müssen Sie das -r verwenden Option, die für --rekursiv steht . Diese Option führt cp aus auf dem Verzeichnis inode , und dann auf alle Dateien im Verzeichnis. Ohne das -r Option, cp erkennt nicht einmal ein Verzeichnis als kopierbares Objekt:
$ cp notes/ notes-backup
cp:-r nicht angegeben; Weglassen des Verzeichnisses 'notes/'
$ cp -r notes/notes-backup
Katze
Die Katze command ist einer der am häufigsten missverstandenen Befehle, aber nur, weil er die extreme Flexibilität eines POSIX-Systems veranschaulicht. Unter allem anderen Katze tut (einschließlich seines beabsichtigten Zwecks von concat enating-Dateien), kann es auch kopieren. Zum Beispiel mit Katze Sie können mit nur einem einzigen Befehl zwei Kopien aus einer Datei erstellen. Mit cp ist das nicht möglich .
Die Bedeutung der Verwendung von cat Das Kopieren einer Datei ist die Art und Weise, wie das System die Aktion interpretiert. Wenn Sie cp verwenden Um eine Datei zu kopieren, werden die Attribute der Datei zusammen mit der Datei selbst kopiert. Das bedeutet, dass die Dateirechte des Duplikats die gleichen sind wie beim Original:
$ ls -l -G -g
-rw-r--r--. 1 57368 25. Juli 23:57 foo.jpg
$ cp foo.jpg bar.jpg
-rw-r--r--. 1 57368 29. Juli 13:37 bar.jpg
-rw-r--r--. 1 57368 25. Juli 23:57 foo.jpg
Mit Katze den Inhalt einer Datei in eine andere Datei einzulesen, ruft jedoch einen Systemaufruf zum Erstellen einer neuen Datei auf. Diese neuen Dateien unterliegen Ihrer standardmäßigen umask die Einstellungen. Um mehr über umask
zu erfahren , lesen Sie den Artikel von Alex Juarez über umask und Berechtigungen im Allgemeinen.
Führen Sie umask aus um die aktuellen Einstellungen abzurufen:
$umask
0002
Diese Einstellung bedeutet, dass neuen Dateien, die an diesem Ort erstellt werden, 664 gewährt wird (rw-rw-r-- )-Berechtigung, da nichts durch die ersten Ziffern der umask maskiert wird eingestellt (und das ausführbare Bit ist kein Standardbit für die Dateierstellung), und die Schreibberechtigung wird durch die letzte Ziffer blockiert.
Beim Kopieren mit cat , Sie kopieren die Datei nicht wirklich. Sie verwenden cat um den Inhalt der Datei zu lesen und dann die Ausgabe in eine neue Datei umzuleiten:
$ cat foo.jpg> baz.jpg
$ ls -l -G -g
-rw-r--r--. 1 57368 29. Juli 13:37 bar.jpg
-rw-rw-r--. 1 57368 29. Juli 13:42 baz.jpg
-rw-r--r--. 1 57368 25. Juli 23:57 foo.jpg
Wie Sie sehen können, Katze eine brandneue Datei erstellt, auf die die Standard-Umask des Systems angewendet wurde.
Wenn Sie am Ende nur eine Datei kopieren möchten, spielen die technischen Details oft keine Rolle. Aber manchmal möchten Sie eine Datei kopieren und am Ende mit einem Standardsatz von Berechtigungen und mit cat enden Sie können alles mit einem Befehl erledigen.
rsync
Die rsync command ist ein vielseitiges Werkzeug zum Kopieren von Dateien, mit der bemerkenswerten Fähigkeit, Quelle und Ziel zu synchronisieren. Im einfachsten Fall rsync kann ähnlich wie cp verwendet werden Befehl:
$ rsync example.txt example_copy.txt
$ ls
example.txt example_copy.txt
Die wahre Stärke des Befehls liegt in seiner Fähigkeit, nicht kopieren, wenn es nicht nötig ist. Wenn Sie rsync verwenden um eine Datei in ein Verzeichnis zu kopieren, aber diese Datei existiert bereits in diesem Verzeichnis, dann rsync macht sich nicht die Mühe, den Kopiervorgang durchzuführen. Lokal bedeutet diese Tatsache nicht unbedingt viel, aber wenn Sie Gigabyte an Daten auf einen Remote-Server kopieren, macht diese Funktion einen großen Unterschied.
Was jedoch auch lokal einen Unterschied macht, ist die Fähigkeit des Befehls, Dateien zu unterscheiden, die den gleichen Namen haben, aber unterschiedliche Daten enthalten. Wenn Sie jemals mit zwei Kopien eines angeblich gleichen Verzeichnisses konfrontiert waren, dann rsync können sie in ein Verzeichnis synchronisieren, das jeweils die neuesten Änderungen enthält. Dieses Setup ist in Branchen, die die Magie der Versionskontrolle noch nicht entdeckt haben, und für Backup-Lösungen, in denen es eine Quelle der Wahrheit gibt, die es zu verbreiten gilt, ziemlich häufig.
Sie können diese Situation absichtlich emulieren, indem Sie zwei Ordner erstellen, einen mit dem Namen example und das andere example_dupe :
$ mkdir example example_dupe
Erstellen Sie eine Datei im ersten Ordner:
$ echo "one"> example/foo.txt
Verwenden Sie rsync um die beiden Verzeichnisse zu synchronisieren. Die gebräuchlichsten Optionen für diese Operation sind -a (für archivieren , wodurch sichergestellt wird, dass symbolische Links und andere spezielle Dateien erhalten bleiben) und -v (für ausführlich , um Ihnen Feedback zum Fortschritt des Befehls zu geben):
$ rsync -av example/ example_dupe/
Die Verzeichnisse enthalten jetzt dieselben Informationen:
$ cat example/foo.txt
one
$ cat example_dupe/foo.txt
one
Wenn die Datei, die Sie als Quelle behandeln, abweicht, wird das Ziel so aktualisiert, dass es übereinstimmt:
$ echo "two">> example/foo.txt
$ rsync -av example/ example_dupe/
$ cat example_dupe/foo.txt
one
twoDenken Sie daran, dass die rsync Der Befehl soll Daten kopieren und nicht als Versionskontrollsystem fungieren. Wenn zum Beispiel eine Datei im Ziel einer Datei in der Quelle irgendwie vorausgeht, wird diese Datei immer noch überschrieben, weil rsync vergleicht Dateien auf Abweichungen und geht davon aus, dass das Ziel immer die Quelle widerspiegeln soll:
$ echo "Du wirst diese Notiz nie wieder sehen"> example_dupe/foo.txt
$ rsync -av example/ example_dupe/
$ cat example_dupe/foo.txt
one
zweiWenn es keine Änderung gibt, findet keine Kopie statt.
Die rsync Der Befehl hat viele Optionen, die in cp nicht verfügbar sind , wie z. B. die Möglichkeit, Zielberechtigungen festzulegen, Dateien auszuschließen, veraltete Dateien zu löschen, die nicht in beiden Verzeichnissen angezeigt werden, und vieles mehr. Verwenden Sie rsync als leistungsfähiger Ersatz für cp , oder einfach nur als sinnvolle Ergänzung.
Viele Möglichkeiten zum Kopieren
Es gibt viele Möglichkeiten, auf einem POSIX-System im Wesentlichen das gleiche Ergebnis zu erzielen, also scheint es, dass der Ruf von Open Source für Flexibilität wohlverdient ist. Habe ich eine nützliche Methode zum Kopieren von Daten übersehen? Teilen Sie Ihre Copy-Hacks in den Kommentaren.