Unterschied zwischen cp -r und cp -a


174

Ich suche den Unterschied zwischen cp -rund cp -a. Was bedeutet "rekursiv" beim Kopieren von Dateien aus einem Ordner?


62
Einige suchen nach einer besseren Erklärung für die Manpages, da nicht immer klar ist, was die Beschreibung bedeutet. Ich musste viele Male graben und testen / experimentieren, um herauszufinden, was mit einem bestimmten Befehl wirklich los ist. Die Manpage von grep kann mich jeden Tag verwirren.
Joe

2
Ich kann deine Frustration verstehen, aber imo ist der beste Weg zu lernen, zu testen und zu experimentieren.
verdreifacht

37
ODER lernen Sie, indem Sie hier Fragen stellen, die Antwort so erhalten, wie Sie sie verstehen, und dann besser verstehen, was und wie Sie testen und experimentieren müssen. Bitte denken Sie daran, dass es bei Ihnen sehr oft nicht funktioniert, bei mir usw. usw.
Will Lanni

Antworten:


198

Rekursiv bedeutet, dass cpder Inhalt von Verzeichnissen kopiert wird. Wenn ein Verzeichnis Unterverzeichnisse enthält, werden diese auch (rekursiv) kopiert. Ohne überspringt -Rder cpBefehl Verzeichnisse. -rist identisch mit -Runter Linux, unterscheidet sich in einigen Randfällen von einigen anderen Unix-Varianten.

Erstellt standardmäßig cpeine neue Datei mit demselben Inhalt wie die alte Datei und denselben Berechtigungen, die jedoch durch die umask eingeschränkt werden . Die Kopie ist vom Zeitpunkt der Kopie an datiert und gehört dem Benutzer, der die Kopie erstellt. Mit dieser -pOption hat die Kopie dieselbe Änderungszeit, dieselbe Zugriffszeit und dieselben Berechtigungen wie das Original. Es hat auch denselben Eigentümer und dieselbe Gruppe wie das Original, wenn der Benutzer, der die Kopie erstellt, die Berechtigung zum Erstellen solcher Dateien hat.

Die -aOption bedeutet -Rund -psowie einige andere Aufbewahrungsoptionen. Es wird versucht, eine möglichst originalgetreue Kopie zu erstellen: gleicher Verzeichnisbaum, gleicher Dateityp, gleicher Inhalt, gleiche Metadaten (Zeiten, Berechtigungen, erweiterte Attribute usw.).


35
Grundsätzlich, es sei denn, Sie möchten etwas Besonderes, das Sie nie brauchen, -rweil -a(für archive) immer das sicherste ist und wahrscheinlich das, was Sie erwartet haben.
ams

2
@ams Ja, das ist eine gute Zusammenfassung. Der einzige häufige Grund für die Verwendung -rist, dass Sie eine andere Unix-Variante als Linux verwenden, die diese nicht hat -a, und im Allgemeinen verwenden würden cp -rp. Oder rsync -a.
Gilles

manchmal erlauben Berechtigungen -r aber nicht -a
DrCord

Nicht -r, nicht -R funktioniert nicht in Ubuntu 18
Arkady

16

Die Option -r oder -R für "rekursiv" bedeutet, dass alle Dateien einschließlich der Dateien in Unterordnern kopiert werden.

Die aufgelistete Option -a ist mit -dR identisch. Dies bedeutet, dass Verknüpfungen beibehalten und der Inhalt von Unterverzeichnissen kopiert werden. Wenn Links erhalten bleiben, folgt dies nicht den Links, da sie rekursiv kopiert werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.