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

Как сказать rsync не проверять разрешения

У меня есть два каталога с одним и тем же приложением PHP в каждом из них. Я хочу выполнить rsync -rvz из одного исходного каталога в другой пункт назначения, поэтому rsync будет копировать только измененные файлы. Проблема в том, что файлы в исходном каталоге по ошибке имеют 755 разрешений. Разрешения в пункте назначения в порядке.

Как я могу сказать, что rsync игнорирует проверки разрешений и проверяет только размер? Спасибо.

Если вы поставите -a флаг -p включается автоматически. Если вы укажете --no-p все другие варианты от -a остаются нетронутыми.

Пока вы не укажете флаг -p разрешения не должны быть изменены. Если вы по-прежнему не получаете требуемых разрешений, убедитесь, что perms отключены, и используйте --chmod = ugo = rwX

Для справки: http://linux.die.net/man/1/rsync

 -r, --recursive             recurse into directories
 -v, --verbose               increase verbosity
 -z, --compress              compress file data during the transfer
 -n, --dry-run               perform a trial run with no changes made

 -p, --perms                 preserve permissions
 -E, --executability         preserve executability
     --chmod=CHMOD           affect file and/or directory permissions

-p, --perms Этот параметр заставляет принимающий rsync устанавливать разрешения назначения такими же, как разрешения источника. (См. Также параметр --chmod, чтобы узнать, как изменить то, что rsync считает исходными разрешениями.)

На странице руководства говорится:

В итоге: чтобы предоставить целевым файлам (как старым, так и новым) права доступа к источнику, используйте --perms. Чтобы предоставить новым файлам права назначения по умолчанию (при сохранении существующих файлов без изменений), убедитесь, что опция --perms выключена, и используйте --chmod = ugo = rwX (что гарантирует, что все немаскированные биты будут включены).

Боковое примечание: если возможно, для вашего разработчика может быть разумнее вернуть свои изменения в репозиторий и заставить все серверы использовать репо кода, а не использовать rsync для отправки файлов с одного сервера на другой.

Я могу ошибаться, но без -p он не должен изменять разрешения. (также -a, который является архивом, сохранит его, но вы, очевидно, тоже не используете его)