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

Rsync - поддерживать разрешение root на другом компьютере?

Я просто пытаюсь скопировать каталог с одного домашнего сервера на другой, оба работают под Ubuntu (9.04 и 9.10), используя rsync. Проблема, с которой я столкнулся, заключается в том, что некоторые файлы в каталоге (и подкаталогах) принадлежат пользователю root. Учетная запись главного администратора на обеих машинах - «ben», поэтому запустите ее на старом сервере:

rsync -v -u -a -p -t -rsh=ssh --stats --progress source/ ben@newserver:/dest

Запрашивает у меня пароль ben @ newserver, копирует источник /, но все разрешения «ben» в новом месте назначения. Выполнение этого с помощью sudo означает, что у меня есть доступ к файлам root, но, с другой стороны, Бен не может записать их как принадлежащие root. При отправке на root @ newserver запрашивается пароль root, которого Ubuntu не дает.

Может ли кто-нибудь просто объяснить, как это сделать? Спасибо :)

Ты можешь настроить ключи SSH, и поместите свой открытый ключ в корневой каталог ~root/.ssh/authorized_keys2 файл на newserver. Таким образом, вы можете выполнять весь процесс как root.

В качестве альтернативы вы можете установить пароль root через:

sudo passwd root

Но ключи SSH надежнее и (ИМХО) удобнее.

Вы можете использовать --rsync-path возможность запустить sudo rsync на удаленной машине; Я подозреваю, вам придется дать ben пользовательские привилегии sudo без пароля для запуска rsync, как шансы rsync-path передача запроса пароля обратно на исходный компьютер - это тонкая процедура.

Для того, чтобы rsync поддерживал все атрибуты владения и прав доступа к файлам, он должен быть запущен как root в конце, в который выполняется запись. Если у вас есть root только на одном конце, это должен быть конец записи, поэтому вам нужно будет сделать

rsync -v -u -a -p -t -rsh=ssh --stats --progress user@oldserver:source/ /dest/

при входе в систему как root на новом сервере.

В --fake-super опция может быть полезна при отправке файлов в место для резервной копии, где у вас нет корневого доступа (и при последующем возвращении файлов обратно), но это не будет применимо здесь без небольшой дополнительной обработки (rsyncing в промежуточное местоположение на любом server с этой опцией, а затем выполнить rsyncing до конечного пункта назначения).

Другие варианты, как уже упоминалось, - предоставить вашему пользователю в конце записи беспарольный доступ к rsync как root в вашей конфигурации sudo.