Как я могу рекурсивно копировать файлы без перезаписи существующих разрешений?

9

Когда я копирую файлы из одного каталога в другой, права доступа к каталогу сбрасываются (например, с 0755 до 0775), и это вызывает проблемы, заставляя меня вернуться назад и вручную сбросить права доступа к каталогу. Я сейчас занимаюсьcp -r /source/directory /destination/directory

Я хочу скопировать все файлы и новые каталоги, но не перезаписывать разрешения существующих каталогов.

Ева
источник

Ответы:

5

Для сохранения ссылок вы можете использовать cp( manpage для cp ) с -dфлагом, который эквивалентен --no-dereference --preserve=links.

Для того, чтобы совместить это с -pи -Rфлагами вы можете использовать флаг архива -a.

Val
источник
7

Добавить флаг -p

cp -pR /source/dir /dest/dir

От man cp:

-p     same as --preserve=mode,ownership,timestamps
vfbsilva
источник
2

Мой ~/.bashrcбыл изменен, чтобы содержать

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

Это означает, что когда я использую cp, он также запрашивает перед перезаписью ( -i) и сохраняет все (то есть режим, владение, метки времени и, если возможно, дополнительные атрибуты: контекст, ссылки, xattr).

Вы всегда можете изменить его на просто modeвместо того, allесли хотите, но мне нравится иметь этот псевдоним для изменения значений по умолчанию cp.

Sparhawk
источник