Я использую 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/'{}' \;