Как сценарировать миграцию базы данных с помощью SSH?

Я пытаюсь создать скрипт sync.sh который координирует с нашим менее чем идеальным контролем версий для нашего сайта. Этот скрипт перенесет копию живой базы данных в нашу локальную среду разработки и пару других вещей. У меня проблемы с частью миграции mysql.

Этот скрипт запускается на машине разработки. remote хост.

 # -------------- # database # ssh tunnel ssh -L 3307:remote:3306 user@remote # mysql dump mysqldump -u someuser -h remote -P 3307 -p"p4ssw0rd" db > localfile.sql # somehow close ssh tunnel ??? # populate local db with sql dump file mysql -ulocal db < localfile.sql # ----------------- # other sync stuff # ... 

Когда я просто запускаю часть mysql скрипта, я получаю этот вывод:

 Pseudo-terminal will not be allocated because stdin is not a terminal. Enter password: 

У нас есть настройка ssh ключей, и я могу ssh на пульт правильно. Однако при запуске в контексте скрипта все идет не так. Я думаю, что я всего лишь баш noob. Я предполагаю, что если я просто изменил структуру своего подхода, у меня не было бы проблем. Я просто не знаю, как это сделать …

One Solution collect form web for “Как сценарировать миграцию базы данных с помощью SSH?”

Вы можете сделать это в одной строке без туннеля, используя что-то вроде:

 $ ssh user@remote "mysqldump -u user --password=password database_name" | mysql -u local database_name 
  • SSH-туннель с autossh
  • Как передать удаленный файл в stdout через scp или sftp?
  • Как узнать, работает ли sshd с ClientAliveInterval> 0?
  • Установить порты для подключения ssh к удаленному малине Pi
  • Есть ли способ поддерживать связь ssh-agent на разных экранах?
  • Легкий SSH-единственный дистрибутив (<128 MiB RAM)
  • Сервер SSH на Ubuntu не работает
  • Как настроить перенаправление портов ssh и запустить завиток в одной команде?
  • Не удается подключиться к ssh-серверу
  • Возможно ли, что X11 можно перенаправить через туннель SSH
  • Как перемещать файлы между серверами с помощью проверки подлинности PubKey?
  • Linux и Unix - лучшая ОС в мире.