У меня есть два каталога с одним и тем же приложением 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, который является архивом, сохранит его, но вы, очевидно, тоже не используете его)