Wie kann ich Dateien rekursiv kopieren, ohne vorhandene Berechtigungen zu überschreiben?

9

Wenn ich Dateien von einem Verzeichnis in ein anderes kopiere, werden die Verzeichnisberechtigungen zurückgesetzt (z. B. von 0755 bis 0775). Dies führt zu Problemen und zwingt mich, zurück zu gehen und die Verzeichnisberechtigungen manuell zurückzusetzen. Ich mache geradecp -r /source/directory /destination/directory

Ich möchte alle Dateien und neuen Verzeichnisse kopieren, aber die Berechtigungen vorhandener Verzeichnisse nicht überschreiben.

Eva
quelle

Antworten:

5

Um Links zu erhalten, können Sie cp( manpage for cp ) mit dem -dFlag verwenden, das äquivalent zu ist --no-dereference --preserve=links.

Um dies mit den Flags -pund zu kombinieren -R, können Sie das Archiv-Flag verwenden -a.

Val
quelle
7

Fügen Sie das Flag -p hinzu

cp -pR /source/dir /dest/dir

Von man cp:

-p     same as --preserve=mode,ownership,timestamps
vfbsilva
quelle
2

Mein ~/.bashrcwurde geändert, um zu enthalten

alias cp='cp -i --preserve=all'

Das heißt, wenn ich es benutze cp, wird es auch vor dem Überschreiben ( -i) aufgefordert und behält alle bei (dh Modus, Besitz, Zeitstempel und wenn möglich zusätzliche Attribute: Kontext, Links, xattr).

Sie können es jederzeit ändern, modeanstatt, allwenn Sie möchten, aber ich mag diesen Alias, um die Standardeinstellungen von zu ändern cp.

Sparhawk
quelle