2012-01-05 3 views
1

Я пытаюсь создать сценарий оболочки, который создает дамп mysql, а затем помещает его на другой компьютер. Я уже установил keyless ssh и sftp. Ниже они создают файл дампа mysql на локальном компьютере при его запуске и не выбрасывают никаких ошибок, однако файл «dbdump.db» никогда не помещается на удаленный компьютер. Если я запустил sftp-соединение и поместил команду вручную, тогда он будет работать.Команда sftp put не работает, когда в сценарии оболочки

содержание mysql_backup.sh

mysqldump --all-databases --master-data > dbdump.db 
sftp -b /home/tim [email protected] <<EOF 
put dbdump.db 
exit 
EOF 

ответ

3

Try использовать УПП, которые должны быть проще в вашем случае.

scp dbdump.db [email protected]:/home/tim/dbdump.db 

Оба sftp и scp используют SSH.

+0

очень хорошо и просто! –

1

Пожалуйста, напишите команду mput/put в один файл (file_contains_put_command) и попробуйте выполнить команду ниже.

sftp2 -B file_contains_put_command /home/tim [email protected] >> log_file 

Пример:

echo binary > sample_file 
echo mput dbdump.db >> sample_file 
echo quit >> sample_file 
sftp2 -B sample_file /home/tim [email protected] >> log_file 
0

Ваш первоначальный подход несколько символов прочь работать, хотя. Вы говорите sftp, чтобы прочитать его пакетные команды из/home/tim -b /home/tim. Итак, если вы измените это на -b -, он должен прочитать его командные команды из stdin.

Что-то в этих строках, если -b/home/tim предназначалось, например, для изменения каталога удаленно, вы можете добавить cd /home/tim к вашему документу.

mysqldump --all-databases --master-data > dbdump.db 
sftp -b - [email protected] <<EOF 
put dbdump.db 
exit 
EOF 
Смежные вопросы