Я пытаюсь указать владельца и группу через rsync
и похоже, что это не работает.
Это команда:
sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/
Файлы синхронизируются правильно, но, похоже, не меняют владельца и группу.
Версия 3.1.0 rsync представил --usermap
и --groupmap
упомянутый Томасом, но и вариант удобства --chown
, который хорошо подходит для вашего сценария.
--chown=USER:GROUP
This option forces all files to be owned by USER with group GROUP.
This is a simpler interface than using --usermap and --groupmap directly,
but it is implemented using those options internally, so you cannot mix them.
If either the USER or GROUP is empty, no mapping for the omitted user/group will
occur. If GROUP is empty, the trailing colon may be omitted, but if USER is
empty, a leading colon must be supplied.
If you specify "--chown=foo:bar, this is exactly the same as specifying
"--usermap=*:foo --groupmap=*:bar", only easier.
Так же -o
и -g
параметры обязательны. Их исключение не приведет к обновлению соответствующего атрибута, но не приведет к ошибке.
rsync -og --chown=cmsseren:cmsseren [src] [dest]
Об этом косвенно говорится в справочная страница, в котором говорится, что --chown
вариант »реализован с использованием --usermap
и --groupmap
внутренне ", и:
Для
--usermap
возможность иметь какой-либо эффект,-o
(--owner
) должна использоваться (или подразумевается), а получатель должен быть запущен как суперпользователь (см. также--fake-super
вариант).Для
--groupmap
возможность иметь какой-либо эффект,-g
(--groups
) должна использоваться (или подразумеваемая), и получатель должен иметь разрешения для установки этой группы.
Похоже, он работает правильно. Использовать --owner
и --group
к сохранить (не задано) имя владельца и группы ... это означает, что вы не хотите, чтобы они менялись после передачи.
Если вы не используете эти параметры, пользователь и группа будут изменены на вызывающего пользователя на принимающей стороне. Если вы хотите указать другого пользователя, вам нужно будет добавить chown
к вашему скрипту.
-o, --owner
This option causes rsync to set the owner of the destination file to be
the same as the source file, but only if the receiving rsync is being run
as the super-user (see also the --super and --fake-super options). Without
this option, the owner of new and/or transferred files are set to the invoking
user on the receiving side...
-g, --group
This option causes rsync to set the group of the destination file to be the same as
the source file. If the receiving program is not running as the super-user (or if
--no-super was specified), only groups that the invoking user on the receiving side
is a member of will be preserved. Without this option, the group is set to the default
group of the invoking user on the receiving side...
Последняя версия (как минимум 3.1.1) rsync позволяет указать "удаленное владение":
--usermap=tom:www-data
Меняет владельца тома на www-data (также известный как PHP / Nginx). Если вы используете Mac в качестве клиента, используйте brew для обновления до последней версии. А на свой сервер скачай архивы исходников, потом «сделай» это!
Другое решение может заключаться в изменении удаленного пользователя, который устанавливает rsync
подключение с использованием --rsync-path
. Я разместил здесь полное объяснение: