#linux #ubuntu #rsync
#linux #ubuntu #rsync
Вопрос:
Я пытаюсь использовать «Rsync» для копирования моего каталога spark на все подчиненные компьютеры с помощью этой команды:
rsync -avL --progress /path/to/spark-0.9.0-incubating ubuntu@<Public_ip_of_slave>:/usr/local`
Я следую инструкциям на этом сайте:
но я столкнулся с ошибкой, в которой отказано в разрешении создавать папки в пункте назначения.
Кто-нибудь может мне помочь?
Комментарии:
1. у вас неверный целевой синтаксис. это должно быть
user@host:/some/dir
(хотя/some/dir
может быть~
, вам следует избегать использования~
)2. Я тоже пробовал это, но не работает
3. Можете ли вы создать целевой каталог вручную в командной строке после ssh на удаленный сервер?
4. Я думаю, проблема в том, что у меня не было папки назначения, у root был. Поэтому я должен использовать команду chown в папке назначения, чтобы сделать ее своей, а не root, но как я не знаю.
5. попробуйте вручную воспроизвести то, что будет делать rsync, то есть ssh на удаленный сервер, и
mkdir /path/to/spark-0.9.0-incubating
. затем попробуйте создать файлы в этом каталоге. если вы не можете, значит, не можете rsync
Ответ №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
команды.