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

Rsync с локального ноутбука на VPS с правильными владельцами

Итак, у меня есть рабочий процесс, который работает, но неуклюже "

RSYNC на ultrapress.co

rsync -azP --delete /Users/rocketadmin/Sites/vagrant-local/www/wordpress-default/wp-content/themes root@107.170.237.162:/var/www/ultrapress.co/htdocs/wp-content/

rsync -azP --delete /Users/rocketadmin/Sites/vagrant-local/www/wordpress-default/wp-content/plugins root@107.170.237.162:/var/www/ultrapress.co/htdocs/wp-content/

================================================== ===========

Затем ОТРЕМОНТИРУЙТЕ собственность

sudo chown -R www-data:www-data /var/www

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

Если у вас есть доступ к rsync версии 3.1.0 или позже, --chown вариант должен быть тем, что вы ищете:

rsync -azP --chown=www-data:www-data [src] [dst]

Обратите внимание и -грамм для его работы требуются опции, но, конечно же, они уже включены через вариант, который вы установили.

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

Вы можете использовать липкие биты, чтобы убедиться, что все, что создается в /var/www/ultrapress.co, будет принадлежать пользователю / группе www-data.

Для этого на сервере выставляем такие разрешения:

chown ultrapress.co www-data:www-data
chmod u+s ultrapress.co
chmod g+s ultrapress.co

Теперь всякий раз, когда какой-либо пользователь создаст новый каталог или файл в этом каталоге, он будет иметь пользователя и группу www-data.

Вы также можете установить липкие биты во всех существующих подкаталогах с помощью:

find ultrapress.co -type d -exec chmod u+s,g+s '{}' +

Или, в качестве альтернативы, установите липкий бит на /var/www каталог:

chmod u+s,g+s /var/www

У вас есть 3 способа сделать это:

  • Предоставьте SSH доступ к www-data и rsync с помощью пользователя www-data. Это крайне не рекомендуется, но, если вы сделаете это с большой осторожностью (заблокируйте весь доступ SSH, кроме вашего собственного IP-адреса, используйте SSH-ключ и удалите пароль для пользователя www-data), это также может сработать.
  • Создайте пользователя и группу на своем локальном ПК с теми же именами и числовыми идентификаторами пользователей, что и на вашем сервере, и убедитесь, что все файлы имеют их в качестве владельцев перед rsyncing (для этого используется флаг -a, который вы уже используете).
  • Создайте сценарий оболочки для rsync на сервере, который выполняет chown сразу после завершения rsync, затем используйте аргумент --rsync-path для клиента.

Мой обычный подход к таким вещам - делать

rsync <options> www-data@remote-host

Затем я использую аутентификацию по SSH-ключу для www-data на удаленном сервере.

Лично я запускаю локальный скрипт как www-data тоже, поскольку я считаю это более логичным.