
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 /destination
nicht 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/.[!.]* /destination
zum Kopieren der Punktdateien und cp -r /origin/..?* /destination
wenn es Dateien gibt, deren Name mit beginnt ..
(außer ..
sich selbst, das das übergeordnete Verzeichnis bezeichnet).