Backing up IIS's metadata only is backing up the structure of the websites and bindings.
To be safe, one has to backup the website we are about to replace.
If on the same machine, we sync the local app to a local folder as follows:
# create a folder copy
msdeploy -verb:sync -source:apphostconfig="Default Web Site\Test" -dest:archiveDir="c:\bck\"
Notice that the above just creates a directory.
To create a package:
# or create a zip:
msdeploy -verb:sync -source:apphostconfig="Default Web Site\Test" -dest:package="c:\bck2\bck.zip"
If we are remoting, we have to add computer, etc. information, to backup the remote server to a local zip:
msdeploy -verb:sync -source:apphostconfig="Bwainz.com",computername=192.168.0.2,userName=Administrator,password=Passw0rd1 -dest:archiveDir="c:\bck\"
or
msdeploy -verb:sync -source:apphostconfig="Bwainz.com",computername=192.168.0.2,userName=Administrator,password=Passw0rd1 -dest:package="c:\bck2\bck.zip"
The result – whether in a directory or zip will be:
<?xml version="1.0" encoding="utf-8"?>
<MSDeploy.appHostConfig MSDeploy.ObjectResolver.dirPath="Microsoft.Web.Deployment.DirPathObjectResolver">
<appHostConfig path="Default Web Site/Test" MSDeploy.path="2" MSDeploy.MSDeployLinkName="Child1" MSDeploy.MSDeployKeyAttributeName="path" MSDeploy.MSDeployProviderOptions="H4sIAAAAAAAEAE2QT0sDMRDFd7UbKOqhh97zAZbYurZ62VN7EKR/wKIHT9nurAbTJCSTln56ncCizuHNY4bh95gsz7Lsmyr1VNcXJO8rtfc22A7FCRrRgtP2fACDJX8FH5Q19YOYiomYlHwRNUYPtYGIXuqSb2Oj1f4Zzjv7Baaupk1XPc7msq3m91DNikS6+wO8EWD5C/hnt94eVQt+45CAYZDCuX62lgcYOImfhSEX2FHqCCHPGUvx2SXJjXTuyQZcWNOpD5bOx0voJMXlxOQvCuF2BwGHBa2GjGRU9E8Ysd5c/QBO9a9wIAEAAA==">
<application path="/Test" MSDeploy.path="2" applicationPool="DefaultAppPool" MSDeploy.applicationPool="1" enabledProtocols="http" MSDeploy.enabledProtocols="1" serviceAutoStartEnabled="false" MSDeploy.serviceAutoStartEnabled="1" serviceAutoStartProvider="" MSDeploy.serviceAutoStartProvider="1" MSDeploy.MSDeployLinkName="PathElement" MSDeploy.MSDeployKeyAttributeName="path">
<virtualDirectoryDefaults path="" MSDeploy.path="1" physicalPath="" MSDeploy.physicalPath="9" userName="" MSDeploy.userName="1" password="" MSDeploy.password="1" logonMethod="ClearText" MSDeploy.logonMethod="1" allowSubDirConfig="true" MSDeploy.allowSubDirConfig="1" MSDeploy.MSDeployLinkName="virtualDirectoryDefaults" />
<virtualDirectory path="/" MSDeploy.path="2" physicalPath="%SystemDrive%\inetpub\wwwroot\Test" MSDeploy.physicalPath="8" userName="" MSDeploy.userName="1" password="" MSDeploy.password="1" logonMethod="ClearText" MSDeploy.logonMethod="1" allowSubDirConfig="true" MSDeploy.allowSubDirConfig="1" MSDeploy.MSDeployKeyAttributeName="path">
<MSDeploy.dirPath path="C:\inetpub\wwwroot\Test" MSDeploy.MSDeployLinkName="Microsoft.Web.Deployment.ContentExtension" />
</virtualDirectory>
</application>
</appHostConfig>
</MSDeploy.appHostConfig>
<systemInfo osVersion="6.1" winDir="C:\Windows" machineName="SKYSW7LT" processorArchitecture="x64" msdeployVersion="1.0" buildVersion="7.1.1631.0">
<iisSystemInfo iisMajorVersion="7" iisMinorVersion="5">
<aspNetVersionInfo>
<aspNetVersion version="2.0.50727.0" />
<aspNetVersion version="4.0.30319.0" />
</aspNetVersionInfo>
<installedComponentInfo>
<installedComponent name="ASP" installed="False" />
<installedComponent name="ASPNET" installed="True" />
<installedComponent name="Authorization" installed="False" />
<installedComponent name="BasicAuthentication" installed="True" />
<installedComponent name="CGI" installed="False" />
<installedComponent name="ClientCertificateMappingAuthentication" installed="False" />
<installedComponent name="CustomLogging" installed="False" />
<installedComponent name="DefaultDocument" installed="True" />
<installedComponent name="DigestAuthentication" installed="False" />
<installedComponent name="DirectoryBrowse" installed="True" />
<installedComponent name="FTPServer" installed="False" />
<installedComponent name="HttpCompressionDynamic" installed="True" />
<installedComponent name="HttpCompressionStatic" installed="True" />
<installedComponent name="IPSecurity" installed="False" />
<installedComponent name="IISCertificateMappingAuthentication" installed="False" />
<installedComponent name="HttpTracing" installed="True" />
<installedComponent name="HttpRedirect" installed="True" />
<installedComponent name="HttpLogging" installed="True" />
<installedComponent name="HttpErrors" installed="True" />
<installedComponent name="ISAPIExtensions" installed="True" />
<installedComponent name="ISAPIFilter" installed="True" />
<installedComponent name="LoggingLibraries" installed="True" />
<installedComponent name="Metabase" installed="True" />
<installedComponent name="NetFxEnvironment" installed="True" />
<installedComponent name="NetFxExtensibility" installed="True" />
<installedComponent name="ODBCLogging" installed="False" />
<installedComponent name="ProcessModel" installed="True" />
<installedComponent name="RequestFiltering" installed="True" />
<installedComponent name="RequestMonitor" installed="True" />
<installedComponent name="ServerSideInclude" installed="False" />
<installedComponent name="StaticContent" installed="True" />
<installedComponent name="W3SVC" installed="True" />
<installedComponent name="WindowsAuthentication" installed="True" />
<installedComponent name="CertProvider" installed="False" />
<installedComponent name="AppWarmUpBeta" installed="False" />
<installedComponent name="dynamicIPRestrictionsBeta" installed="False" />
</installedComponentInfo>
</iisSystemInfo>
</systemInfo>
Note:
The zip and folder both differ from a package generated by Visual Studio in that
parameters.xml (as Visual Studio can see it as part of the project, whereas IIS doesn't have it there to include).
<?xml version="1.0" encoding="utf-8"?> <sitemanifest> <IisApp path="Z:\Dropbox\Code\Spikes\XAct.Spikes.WebDeploy05\XAct.Spikes.WebDeploy05\obj\Release\Package\PackageTmp" managedRuntimeVersion="v4.0" /> <setAcl path="Z:\Dropbox\Code\Spikes\XAct.Spikes.WebDeploy05\XAct.Spikes.WebDeploy05\obj\Release\Package\PackageTmp" setAclResourceType="Directory" /> <setAcl path="Z:\Dropbox\Code\Spikes\XAct.Spikes.WebDeploy05\XAct.Spikes.WebDeploy05\obj\Release\Package\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" /> </sitemanifest>
Important: Note that the above is only backing up the WebSite...not the database.