Я просто удаюсь, сколько недавних снимков я хочу сохранить (28 в этом примере, включая тот, который я только что создал, который все еще находится на рассмотрении), затем удалите немного более старый, чем это:
for SNAPSHOT in `ec2-describe-snapshots | grep $THIS_EBS_VOLUME | grep -v pending | head -n -27 | awk '{print $2}'` ; do
ec2-delete-snapshot $SNAPSHOT
done
Попробуйте это:
ssh one 'cat file' | ssh two 'cat > file'
Первый должен отправить содержание файла на Вашу машину, в то время как второе должно переслать это к второй машине. Я вычислил бы контрольную сумму в обоих концах после передачи, чтобы гарантировать, что ничто не потерялось или исказило по пути.
Для более тщательно продуманных приложений Вы могли использовать туннели ssh. Например, Вы могли попробовать что-то вроде этого:
ssh -R 5001:127.0.0.1:5002 one
ssh -L 5002:127.0.0.1:22 two
Затем можно открыть соединение на one
к машине localhost
порт 5001
и это будет передано дважды и закончится как соединение на two
кому: localhost
порт 22
. Это - ssh порт, таким образом, можно использовать это для еще одного scp, или для rsync, или что бы то ни было. Вы могли также запустить rsync
сервер на two
, и порт передачи 873 вместо 22. Или Вы могли использовать nc
с обеих сторон передавать необработанные данные, с помощью произвольного номера порта.
Основное преимущество между вышеупомянутым подходом - то, что у Вас есть двухнаправленное соединение TCP между этими двумя машинами вместо однонаправленного канала только. Тем путем эти две стороны могут обмениваться информацией, которая особенно важна в rsync
случай.
Так как у Вас есть пользовательский доступ к исходному серверу (тот), почему бы не войти и выполнить Вашу команду scp на том сервере непосредственно... Если Вы волнуетесь, что это займет слишком много времени, то запустите команду внутри a screen
затем отсоединение с экрана с Ctrl+a d
и позвольте ему работать.
Однако, если необходимо сделать это от рабочей станции, и ключи SSH с источника на целевой сервер работают хорошо, затем отправляют scp
управляйте как параметр ssh
команда, как:
ssh user@source 'scp /path/to/file user@destination:/path/to/file'
Поиск сообщения об ошибке: "Проверка ключа хоста перестала работать". казалось бы, был бы самой простой вещью сделать здесь. Я нашел это Вопросами и ответами на askubuntu названный: проблема соединения SSH с “Проверкой ключа хоста привела … к сбою” ошибка.
Один из ответов, которым Вопросы и ответы намекнули, что проблема лгала с конфликтующей записью в Вашем ~/.ssh/known_hosts
файл. Можно или удалить неприятные записи из того файла с помощью любого текстового редактора, или можно использовать эту команду для удаления записей:
$ ssh-keygen -R hostname
Где hostname
был бы или IP-адрес или название сервера, от которого Вы пытаетесь соединиться. Все вышеупомянутое было бы на хосте два между прочим.
one
и two
серверы от моей рабочей станции без любых проблем.. проблема запускается, когда я работаю scp one:file two:file
от рабочей станции. И существуют, нет known_hosts
файл или на один или два. Я просто попытался удалить ключи для два (даже, чтобы один был уверен) на моей рабочей станции, но ничто не изменилось (за исключением, Вы верный y/n propt).
– Jan Spurny
02.08.2013, 17:52
scp workstation:file one:file
и workstation:file two:file
? Очевидно, Вы не должны говорить "workstation:file", я просто говорю это явно для пользы разговора.
– slm♦
02.08.2013, 17:55
workstation$ scp one:file file
и workstation$ scp file two:file
. Так или иначе я думаю, что решил его. Я добавлю его как свой собственный ответ.
– Jan Spurny
02.08.2013, 18:06
Полный кредит для этого ответа отправляется в https://superuser.com/6/602436/142948
Вам нужна опция -3
для SCP :
scp -3 one:/opt/bigfile.tar.gz two:/opt/bigfile.tar.gz
-3
: копии между двумя удаленными хостами передаются через Местный хост. Без этой опции данные копируются напрямую между два удаленных хоста.
http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1
В противном случае 2-й псевдоним «два» разрешается на хосте «один» , что может не существовать.