Как скопировать содержимое папки, не нарушая прав доступа к папке назначения?

Как скопировать содержимое папки, не нарушая прав доступа к папке назначения?

Я хочу скопировать все файлы и папки из одного каталога в другой.безизменение прав доступа к целевому каталогу.

Где исходная папка — 555, а папка назначения — 775. Если я использую команду ниже, место назначения изменится на 555. Мне это не нужно.

cp -r /origin/. /destination

Какой правильный синтаксис для копирования содержимого /origin? Так что /destination остается 775

У меня нет sudo.

решение1

использовать rsync:

rsync -rlD /origin/ /destination/

Важно то , что /в конце стоит origin/, что говорит rsync копировать содержимое каталога, а не сам каталог. Таким образом, каталог верхнего уровня не копируется и /destinationне изменяется, за исключением файлов, которые в него добавляются.

Объяснение переключателей:

-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

решение2

Вместо копирования самого каталога скопируйте находящиеся в нем файлы.

cp -r /origin/* /destination

Если есть файлы с точкой (файлы, имя которых начинается с символа .), они не будут скопированы, т.к. *пропускает их. Используйте cp -r /origin/.[!.]* /destinationдля копирования файлов с точкой, а также cp -r /origin/..?* /destinationесли есть файлы, имя которых начинается с ..(кроме ..себя, что обозначает родительский каталог).

Связанный контент