Используйте цикл для итерации по каталогам, в которые Вы хотите скопированный и копируете содержание Вашего основного каталога каждому:
dest=(Fred Barney Thelma Louise Foo Bar)
for d in "${dest[@]}"; do
cp -r master "$d"
done
Если в Вас входят machineA как корень затем, я не думаю, что необходимо сказать root@machineA:/...
бит, можно сказать это немного меньше verbosely как это:
$ scp david@machineB:/bat/data/snapshot/5.data /data01/primary
Я всегда говорю, что целевые каталоги как это также, именно так более очевидно, что собирается произойти:
$ scp david@machineB:/bat/data/snapshot/5.data /data01/primary/.
Но я не думаю, что это - первопричина Вашего сообщения об ошибке:
Проверка ключа хоста перестала работать.
Скорее это сообщение обычно означает, что у Вас есть недопустимое, и/или из синхронизирующего хоста вводят Ваш /etc/.ssh/known_hosts
файл.
Можно подтвердить с этой командой:
$ ssh-keygen -R <hostname>
$ ssh-keygen -R skinner
# Host skinner found: line 1 type RSA
# Host skinner found: line 125 type RSA
/home/saml/.ssh/known_hosts updated.
Original contents retained as /home/saml/.ssh/known_hosts.old
Если Вы знаете то, что Вы делаете и не заботитесь о проверке хоста, что можно временно отключить ее как так:
$ scp -o StrictHostKeyChecking=no \
david@machineB:/bat/data/snapshot/5.data /data01/primary/.
“Проверка ключа хоста, неудавшаяся”, означает, что Вы ранее соединились с машиной тем именем, и Вы теперь соединяетесь с другой машиной тем же именем. В идеальном мире это было бы безошибочным знаком, что кто-то угоняет Ваше соединение, и Вы пытаетесь соединиться с машиной взломщика вместо той, которая Вы хотели соединить Вас. Поэтому SSH отклоняет попытку подключения.
Так как Вы копируете между двумя удаленными машинами, любой из них мог быть преступником. Для наблюдения, какой это, выполняет команду на одной машине, например. ssh david@machineB true
и ssh root@machineA true
.
В комментарии я вижу, что Вы видите эту ошибку, когда Вы пытаетесь достигнуть machineA от себя. Это всегда безопасно (если нет причуды в определении имен, которые заставляют Ваше название машины относиться к другой машине). Наиболее вероятное объяснение состоит в том, что Вы переустановили свою машину в какой-то момент, заставив Ваш ключ хоста измениться, но Вы снова использовали старое имя хоста.
Ssh хранит информацию о прошлых соединениях в файле ~/.ssh/known_hosts
. Если Вы решили, что запись там является устаревшей (потому что машина была переустановлена), удалите ее:
ssh-add -R root@machineA
scp david@machineB:/bat/data/snapshot/5.data /data01/primary/.
от machineA это хорошо работает. Но если я выполняю свою ту же команду как этоscp david@machineB:/bat/data/snapshot/5.data root@machineA:/data01/primary
отmachineA
, это всегда дает мне вышеупомянутое исключение.. Какие-либо мысли, почему? – SSH 17.12.2013, 07:38known_hosts
файлы в соответствии с обеими учетными записями на machineA и B. Можно отладитьssh
иscp
путем добавления растущих чисел-v
переключатели. Пример,scp -vv david@machineB:....
. Причина должна быть довольно очевидной с увеличенной отладкой. – slm♦ 17.12.2013, 08:13-vv
переключатели. Пример:scp -vv david@machineB:/bat/data/snapshot/5.data root@machineA:/data01/primary |& tee logfile.txt
. Это получит вывод в файлlogfile.txt
. – slm♦ 17.12.2013, 08:24