Отказано в разрешении Rsync mkdir

Я пытаюсь использовать «Rsync», чтобы скопировать мой каталог spark на все подчиненные машины с помощью этой команды:

rsync -avL --progress /path/to/spark-0.9.0-incubating ubuntu@<Public_ip_of_slave>:/usr/local` 

Я следую инструкциям на этом сайте:

http://docs.sigmoidanalytics.com/index.php/Setup_hadoop_2.0.0-cdh4.2.0_and_spark_0.9.0_on_ubuntu_aws_cluster"

но я сталкиваюсь с ошибкой, из-за которой отказано в разрешении на создание папок в месте назначения.

Может кто-нибудь помочь мне?


person user3789843    schedule 30.06.2014    source источник
comment
у вас неправильный целевой синтаксис. это должно быть user@host:/some/dir (хотя /some/dir может быть ~, вам следует избегать использования ~)   -  person mvp    schedule 30.06.2014
comment
Я тоже так пробовал, но не работает   -  person user3789843    schedule 30.06.2014
comment
Можете ли вы создать целевой каталог вручную в оболочке после ssh на удаленном сервере?   -  person mvp    schedule 30.06.2014
comment
Я думаю, проблема в том, что я не владел папкой назначения, а был root. Поэтому я должен использовать команду chown в папке назначения, чтобы сделать ее своей, а не root, но как я не знаю.   -  person user3789843    schedule 30.06.2014
comment
попробуйте вручную воспроизвести то, что будет делать rsync, то есть ssh на удаленный сервер, и mkdir /path/to/spark-0.9.0-incubating. затем попробуйте создать файлы в этом каталоге. если не можешь, значит не можешь rsync   -  person mvp    schedule 30.06.2014
comment
Я могу подключиться по ssh к удаленному серверу и создать файл, но как работать с rsync   -  person user3789843    schedule 30.06.2014


Ответы (1)


Пользователь ubuntu (которого вы используете для scp) не имеет соответствующих прав доступа к каталогу на /usr/local на удаленном сервере.

Неправильная конфигурация может привести к проблемам с безопасностью, поэтому не рекомендуется изменять разрешение каталога /usr/local. Если вы хотите сделать это, запустите:

ssh ubuntu@remote-server 'sudo chown root:ubuntu /usr/local'

где remote-server — это имя хоста или IP-адрес удаленного сервера, при условии, что ubuntu является администратором. Вы также можете разрешить всем остальным писать в каталог:

ssh ubuntu@remote-server 'sudo chmod o+w /usr/local'

но это более опасно, чем предыдущий вариант.

Кроме того, вы можете сначала скопировать его в свой домашний каталог, а затем выполнить команду sudo, чтобы переместить файлы в /usr/local:

rsync -avL --progress /path/to/spark-0.9.0-incubating ubuntu@remote-server:~
ssh ubuntu@remote-server 'sudo mv ~/spark-0.9.0-incubating /usr/local'

~ будет расширен до домашнего каталога пользователя, который в данном случае, скорее всего, будет /home/ubuntu/.

Не забудьте соответствующим образом изменить права доступа /usr/local/spark-0.9.0-incubating, чтобы разрешить доступ авторизованным пользователям с помощью команды chmod.

person craidz    schedule 26.04.2017