PHP-скрипт для копирования базы данных с одного сервера на другой

У меня есть сценарий, в котором мне нужно ежедневно копировать производственную базу данных в мою базу данных разработчика. Оба являются разными серверами. Что я придумал о написании cronjob, который сделает все. Я написал скрипт php. Я подключаюсь к удаленному производственному серверу через sshpass, беру его дамп, а затем заполняю этот дамп.

exec("sshpass -p 'mypassword' ssh root@IP_ADDRESS:PORT");
exec("mysqldump -u root -p DB > production_dump.sql");
exec("mysql -u root -p test < production_dump.sql");

Но в первой строке выдает ошибку с указанием

ssh: Could not resolve hostname IP_ADDRESS:PORT: Name or service not known

Я пробовал данное решение в Интернете, но ни одно из них не сработало. Может ли кто-нибудь объяснить, что я делаю неправильно?


person Awais Qarni    schedule 22.10.2019    source источник
comment
Резервное восстановление ?   -  person RiggsFolly    schedule 22.10.2019
comment
Похоже, вы написали сценарий bash, обернутый в PHP? Почему бы не сделать это чистым bash?   -  person Marcin Orlowski    schedule 22.10.2019
comment
@MarcinOrlowski, потому что я не очень знаком с этим и не знал, как я могу достичь этого в приведенном выше сценарии, например, запустить его как задание cron   -  person Awais Qarni    schedule 22.10.2019


Ответы (1)


Ваша команда не работает, потому что она неправильно отформатирована. Вам необходимо использовать один из следующих форматов:

sshpass -p 'mypassword' ssh root@IP_ADDRESS PORT
sshpass -p 'mypassword' ssh root@IP_ADDRESS -p PORT
sshpass -p 'mypassword' ssh ssh://root@IP_ADDRESS:PORT

Однако я не уверен, что остальная часть скрипта будет работать, особенно если она начнет запрашивать пароль. Сценарий bash - это то, что вам нужно.

person aynber    schedule 22.10.2019