@HirasawaYui

Как вывести результат mysqldump на удаленный сервер через ssh?

Подключаюсь через ssh к серверу, отправляя ему команды через plink (записав их в .bat файл).
Мой скрипт выглядит так:
C:/mypath/plink.exe -batch ^
remoteuser@remoteserver.com -pw mypassword ^
"mysqldump -u database_user -pdbpass database_name > mysqlBackup/dbdump.sql"
pause

При этом mysqldump выполняется на удаленной машине, но результат записывает в файл mysqlBackup/dbdump.sql на локальной машине, что естественно занимает кучу времени. Как указать в команде что результат надо записать в файл там же, на удаленной машине?
Так же хотелось бы прогнать в gzip, то есть:
mysqldump -u database_user -pdbpass database_name | gzip > mysqlBackup/dbdump.sql.gz

а потом собственно и выгрузить получившийся бекап на локальную машину:
scp C:/mypath/ remoteuser@remoteserver.com:~/mysqlBackup/dbdump.sql.gz
  • Вопрос задан
  • 401 просмотр
Решения вопроса 1
@HirasawaYui Автор вопроса
Нашел в чём была проблема, оказывается escape characters в моём скрипте - "^", непонятным мне образом влияли на работу скрипта, а конкретно - "^" непосредственно перед кавычками, в которых содержится передаваемая команда для выполнения на удаленной машине, т.е. я переписал всю команду:
C:/mypath/plink.exe -batch ^
remoteuser@remoteserver.com -pw mypassword ^
"mysqldump -u database_user -pdbpass database_name > mysqlBackup/dbdump.sql"

в одну строку:
C:/mypath/plink.exe -batch remoteuser@remoteserver.com -pw mypassword "mysqldump -u database_user -pdbpass database_name > mysqlBackup/dbdump.sql"

И всё заработало так, как должно быть, т.е. output идёт в файл mysqlBackup/dbdump.sql на сервере. Удивительно. Буду благодарен если кто-нибудь сможет объянить такую логику.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sashkets
@sashkets
Прекратил отвечать после 24.02.2022
подключаемся по ssh на удаленный хост
делаем, что нужно в консоли
с локального компа выполняем sftp на уд хост (можно winscp)
забираем результат
Ответ написан
@iddqda
network engineer, netdevops
про винду не знаю, а в линукс вот так бы сработало
mysqldump -u database_user -pdbpass database_name | \
gzip -c | ssh remoteuser@remoteserver.com "cat > mysqlBackup/dbdump.sql.gz"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы