Wie kopiere ich den Inhalt eines Ordners, ohne die Berechtigungen des Zielordners zu beeinträchtigen?

Wie kopiere ich den Inhalt eines Ordners, ohne die Berechtigungen des Zielordners zu beeinträchtigen?

Ich möchte alle Dateien und Ordner von einem Verzeichnis in ein anderes kopierenohneÄndern der Berechtigungen des Zielverzeichnisses.

Wobei der Quellordner 555 und der Zielordner 775 ist. Wenn ich den folgenden Befehl verwende, wird das Ziel auf 555 geändert. Das möchte ich nicht.

cp -r /origin/. /destination

Was ist die korrekte Syntax, um den Inhalt von /origin zu kopieren? Damit /destination 775 bleibt

Ich habe kein Sudo.

Antwort1

verwenden rsync:

rsync -rlD /origin/ /destination/

Wichtig ist das /am Ende von origin/, das rsync anweist, den Inhalt des Verzeichnisses zu kopieren, nicht das Verzeichnis selbst. Auf diese Weise wird das oberste Verzeichnis nicht kopiert und /destinationnicht geändert, außer dass Dateien hinzugefügt werden.

Schalter erklärt:

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

-r, --recursive             recurse into directories
-l, --links                 copy symlinks as symlinks
-p, --perms                 preserve permissions
-t, --times                 preserve modification times
-g, --group                 preserve group
-o, --owner                 preserve owner (super-user only)
-D                          same as --devices --specials

--devices               preserve device files (super-user only)
--specials              preserve special files

Antwort2

Kopieren Sie nicht das Verzeichnis selbst, sondern die darin enthaltenen Dateien.

cp -r /origin/* /destination

Wenn es Punktdateien gibt (Dateien, deren Name mit dem Zeichen beginnt .), werden sie nicht kopiert, da *diese übersprungen werden. Verwenden Sie cp -r /origin/.[!.]* /destinationzum Kopieren der Punktdateien und cp -r /origin/..?* /destinationwenn es Dateien gibt, deren Name mit beginnt ..(außer ..sich selbst, das das übergeordnete Verzeichnis bezeichnet).

verwandte Informationen