Назад | Перейти на главную страницу

Можно ли с помощью MSDeploy создать удаленную резервную копию сайта?

В настоящее время я использую package dest для создания резервной копии сайта следующим образом:

msdeploy.exe -source:appHostConfig="Default Web Site",computerName="https://server:8172/MSDeploy.axd?site=Default Web Site",userName="abc",password="xyz",authtype="basic" 
-dest:package="c:\backup\backup-2011.8.2.1000.zip" -verb:sync

Здесь местом назначения является локальный файл. Можно ли сделать целевой объект местоположением на самом удаленном сервере? Я запускаю команду со своего сервера сборки, но хочу, чтобы резервная копия создавалась и сохранялась на удаленном сервере, а не загружалась на машину сборки.

Это будет работать с общедоступным сервером, поэтому об общих папках не может быть и речи. Какие еще у меня есть варианты?

Да, с -source: runCommand, но сначала вы должны поместить туда скрипт (например, пакет)

из: http://sourcecodebean.com/archives/synchronizing-files-and-executing-commands-on-a-remote-server-using-msdeploy/775 Bellow - это простой сценарий PowerShell, который выполняет две функции. Отправить файлы - синхронизирует локальную папку с удаленным сервером. Execute-RemoteCommand - выполняет командный файл на удаленном сервере. Файл уже должен быть на сервере.

$MSDeployExe = "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe"
$RemoteHost = "http://localhost:80/MsDeployAgentService"
$Credentials = ""
$LocalDir = "C:\temp\LocalDir"
$RemoteDir = "C:\temp\RemoteDir"

function Send-Files {
        param (
                [string]$WebDeployService,
                [string]$LocalDir,
                [string]$RemoteDir,
                [string]$Credentials
        )

        Write-Host "Sending files to $WebDeployService`: $RemoteDir" -ForegroundColor Yellow

        if ($Credentials -ne "") {
                $Credentials = ",getCredentials=" + $Credentials
        }

        & $MSDeployExe "-verb:sync" "-source:dirPath=$LocalDir" "-dest:dirPath=$RemoteDir,computername=$WebDeployService$Credentials" "-verbose"
        $successful = $?

        if (-not $successful) {
                throw "Failed sending files"
        }
}

function Execute-RemoteCommand {
        param (
                [string]$WebDeployService,
                [string]$RemoteDir,
                [string]$BatchFile,
                [string]$Credentials,
                [int]$waitInterval = 15000
        )

        $command = Join-Path $RemoteDir $BatchFile
        Write-Host "Executing $command on $WebDeployService" -ForegroundColor Yellow

        & $MSDeployExe "-verb:sync" "-source:runCommand=’$command’,waitInterval=$waitInterval,waitAttempts=1" "-dest:auto,computername=$RemoteHost$Credentials" "-verbose"

        $successful = $?

        if (-not $successful) {
                throw "Failed executing command"
        }
}

# Test
Send-Files $RemoteHost $LocalDir $RemoteDir $Credentials
Execute-RemoteCommand $RemoteHost $RemoteDir "HelloWorld.bat" $Credentials