使用 Plink 将 .NET 构建文件夹的内容复制到 Ubuntu 服务器

Copying contents of .NET build folder to Ubuntu server using Plink

我正在 PowerShell 中构建一个预部署脚本,该脚本创建我的 .NET Core Web Api 应用程序的生产版本,然后通过 SSH 密钥通过 SSH 连接到我的 Ubuntu Digital Ocean Droplet。

我目前正处于创建构建、使用 Copy-Item、SSH 复制构建文件夹到我的服务器的阶段,然后这就是我完全卡住的地方。

我知道我可以从我的 PowerShell 脚本中 运行 BASH 命令,因为我已经尝试了一些基本操作,例如创建和删除目录,我可以 cd 进出的目录。我尝试将复制的 .NET 构建文件夹作为变量存储在内存中: $build = Copy-Item -Path $projectBuildPath -Recurse 然后发现这无法完成(真的很遗憾,那会很酷)然后通过 p-link cli 打开到我的服务器的会话,如下所示:

plink.exe -ssh -i $SSHKeyLocation $linuxRemoteHost "cd path\to\server\build-folder && paste ${build}"

但是又因为你不能在内存中存储复制的目录,所以失败了。

我的 PowerShell 脚本如下所示:

$projectRootDir
$projectBuildPath
$linuxRemoteHost
$SSHKeyLocation

Set-Location $projectRootDir
Write-Host "Building .NET application..."

dotnet publish --configuration Release --verbosity normal

Write-Host "Built Successfully..."
Write-Host "Copying project build files"

$build = Copy-Item -Path $projectBuildPath -Recurse
# fails, for obvious reasons

Write-Host "Remoting into MusicPortal Server..."

plink.exe -ssh -i $SSHKeyLocation $linuxRemoteHost "cd path\to\server\build-folder && paste ${build}"
# SSH Connection successful, paste command fails

Write-Host "Remote successfull, transfering build files..."

exit 0

我应该怎么做才能将复制的目录成功粘贴到我的服务器?我是 PowerShell 和 SSH 的菜鸟。

尝试使用plink将文件上传到服务器是很奇怪的。由于您没有给出任何特定原因,为什么要使用 plink,我假设这是一个错误。

您不想使用 plink。您想要使用 psftp or pscp(与 plink 相同的 PuTTY 包的一部分)。

pscp -r -i $SSHKeyLocation $projectBuildPath $linuxRemoteHost:/path/to/server/build-folder/