Проблемы с командой Rsync, права владельца и группы не меняются


28

Я пытаюсь установить владельца и группу через, rsyncи это, кажется, не работает.

Это команда:

sudo rsync -rlptDvz --owner=cmsseren --group=cmsseren /home/serena/public_html/ -e ssh root@ip:/home/cmsseren/public_html2/

Файлы синхронизируются правильно, но, похоже, не меняют владельца и группу.

Ответы:


14

Похоже, он работает правильно. Используйте --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...

человек rsync


1
Так как я могу выбрать пользователя и группу удаленно? Через сш? Не могли бы вы сказать мне, как? У меня есть root-права для обоих серверов. Я не хочу использовать ssh-ключи, но скажите мне все варианты, которые вы знаете, я буду признателен за это. Спасибо за быстрый ответ
Арнольдо Базальдуа

Команда будет выглядеть примерно так: ssh root@ip 'chown -R cmsseren:cmsseren /home/serena/public_html2/*'
user3150166

Я пробовал, но не получилось, владельцы и пользователи одинаковые. После выполнения команды он говорит: stdin: не tty
Арнольдо Базальдуа

Это работает сейчас, проблемы с брандмауэром. Теперь мне просто нужно автоматизировать ввод пароля для ssh и rsync
Арнольдо Базальдуа

Я опубликую это в другом вопросе, спасибо за вашу помощь
Арнольдо Базальдуа

61

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


5
Почему -og требуется? Это кажется нелогичным для меня, но это требуется и для моей системы.
Yai0Phah

4
@FrankScience Согласен, это кажется нелогичным. Тот же вопрос был задан в списке рассылки rsync . «Я хотел бы предложить, чтобы документы для этого были --chownбы хорошо упомянуть, что --owner( --super) и --groupнеобходимы» .
TachyonVortex

5

Последняя версия (не менее 3.1.1) rsync позволяет указать «удаленное владение»:

--usermap=tom:www-data

Смена владельца сайта на www-data (он же PHP / Nginx). Если вы используете Mac в качестве клиента, используйте brew для обновления до последней версии. А на вашем сервере скачайте архивы с источниками, затем «сделайте» это!


0

Другим решением может быть изменение удаленного пользователя, который устанавливает rsyncсоединение с помощью --rsync-path. Я разместил полное объяснение здесь:

/unix//a/546296/116861

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.