Я просто пытаюсь скопировать каталог с одного домашнего сервера на другой, оба работают под 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.