【问题标题】:MYSQLDUMP over Powershell SSH (POSH)Powershell SSH 上的 MYSQLDUMP (POSH)
【发布时间】:2021-03-09 14:39:26
【问题描述】:

我现在为此苦苦挣扎了一天。基本上,我想使用每天在我的 Windows 计算机上运行的 powershell 脚本在我们的网络空间上备份 MySQL 数据库。

当我使用 Putty 并输入以下命令时,会创建一个备份文件:

mysqldump XXXX --add-drop-table -u XXXX -p******* > backup/backup.sql

但是当我从 powershell 运行它时,它不会创建备份文件,即使我调用完全相同的命令:

$sshsession = New-SSHSession -ComputerName $sshserver -Credential $Creds -Force -Verbose
[string]$backupcmd = "mysqldump XXXX --add-drop-table -u XXXX -p******* > backup/backup.sql"
Write-Output $backupcmd
$backupdb = Invoke-SSHCommand -SSHSession $sshsession -Command "$backupcmd"

似乎Posh-SSH的“>”操作符有问题,可能没有足够的时间执行,我不知道。还尝试了 Invoke-SSHCommand 上的 Timeout 之类的方法,但没有任何效果。

我不能在远程服务器上做诸如 crons 之类的事情,它只是一个功能有限的网络空间。启动 bash 脚本也不起作用,我无权在远程服务器上执行脚本。

【问题讨论】:

  • 大概Invoke-SSHCommand 直接从给定的命令行创建一个进程,而不是从shell 运行它。然而,重定向操作符是一个 shell 内置特性。尝试将命令行更改为"cmd /c mysqldump ... > backup/backup.sql"。或者通过plinkPuTTY suite 的批处理执行工具)运行远程命令。
  • 对不起,我是新人。我想使用 sshcommand 运行 mysql 查询

标签: mysql bash powershell ssh posh-ssh


【解决方案1】:

如果您需要专门针对 mysqldump 命令,可以使用 --result-file 或仅使用 -r 参数。

在这种情况下,它看起来像这样:

$ backupcmd = "mysqldump XXXX --add-drop-table -u XXXX -p ******* -r backup/backup.sql"

我没有进行测试,因为我目前没有可用的 POSH,但您可以参考文档:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_result-file

告诉我们结果是这样的。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2018-08-23
    • 2012-08-15
    • 2023-03-03
    相关资源
    最近更新 更多