Назад | Перейти на главную страницу

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

Я использую AWS CodeDeploy для копирования файлов с git на сервер. Он не может перезаписать файлы, поэтому мне нужно переместить файлы в другое временное место, а затем он перемещает файлы из репо на исходный сервер. /var/www.

Я хотел бы сохранить разрешения для каталогов и файлов такими же, как и раньше, поэтому могу ли я использовать rsync синхронизировать с этой новой папкой только разрешения и права владения с использованием старых файлов в папке temp, но не самих файлов?

AFAIK нет флагов rsync, чтобы синхронизировать только владение и разрешения, но как chmod и chown команды поддерживают --reference флаг.

Вы можете указать на существующий файл и chmod будет использовать разрешения этого файла вместо того, чтобы вам нужно было указывать значения MODE при изменении режима файла.
так же chown будет использовать владельца и группу этого справочного файла / каталога, а не указывать значения OWNER: GROUP.

Затем вы можете сделать что-то вроде:

cd /template/
find . -exec chmod -v --reference='{}' /path/to/target/'{}' \;
find . -exec chown -v --reference='{}' /path/to/target/'{}' \;