如何进行IIS站点/内容备份?

时间:2015-04-26 15:11:08

标签: iis backup

我想学习ASP.NET,为此,我阅读了一些管理IIS Web服务器的基础教程。我想知道如何对我的网站(配置和内容)进行完整备份。我在Hyper-V Windows Server 2012R2 Core上运行IIS服务器并管理Powershell Remote。

在Intenet中,有一篇关于一些基本内容的文章(see here

本文说,我可以通过

对我的IIS配置和内容进行完整备份
Backup-WebConfiguration -Name "My Backup"

并将其恢复

Restore-WebConfiguration -Name "My Backup"

问题是:它似乎只是从配置而不是从内容进行备份。例如:它从IIS:\ Sites恢复网站,但不恢复其中的应用程序文件夹和default.htm等物理内容。如果我删除默认的.htm和文件夹,使用Restore-WebConfiguration,它仍然不会恢复它 - 只有WebConfiguration本身。

从我猜测的Articel,它也将恢复内容...... 我做错了吗?我怎样才能做我想要的事情"从头开始"没有来自MS Web Deploy 3.0的脚本?

感谢您的帮助和最好的问候,

1 个答案:

答案 0 :(得分:2)

Backup-WebConfiguration仅备份applicationHost.config文件中详细说明的配置项。它不处理实际内容,而是处理IIS处理内容的方式。

要做到这两点很容易,这里是一个快速创建zip文件的函数(只需输入inetpub目录的路径)并备份配置。 (这需要Powershell v3或更高版本)备份将自动为其设置创建日期(您可以使用Get-WebConfigurationBackup查看备份列表,因此这将继续并添加日期和时间到zip文件以及它们可以匹配。

如果您在同一天进行多个备份,则需要调整压缩文件的文件名,因为它只有文件名中的日期。

function Backup-WebServer
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)]
        [ValidateNotNullOrEmpty()]            
        [ValidateScript({Test-Path $_})]
        [string]$Source,

        [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)]
        [ValidateNotNullOrEmpty()]
        [ValidateScript({Test-Path $_})]
        [string]$Destination,

        [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)]
        [ValidateNotNullOrEmpty()]
        [string]$ConfigurationName
    )

    Add-Type -Assembly System.IO.Compression.FileSystem
    Import-Module WebAdministration
    $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal

    $date = $(Get-Date -Format d).Replace('/','-')
    $fileName = "Inetpub-Backup $date.zip"

    $inetpubBackup = Join-Path -Path $Destination -ChildPath $fileName

[System.IO.Compression.ZipFile]::CreateFromDirectory($Source,$inetpubBackup,$compressionLevel,$false)

    Backup-WebConfiguration -Name $ConfigurationName

}