Synchronizing from a Remote Source
Updated: March 12, 2009
Applies To: Windows 7, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP
The Microsoft Web Deployment Tool (Web Deploy) facilitates the synchronization of Web sites and Web servers. A synchronization operation can be performed between two IIS 6.0 Web sites or Web servers, between two IIS 7 Web sites or Web servers, or from an IIS 6.0 source to an IIS 7 destination.
This topic shows you how to use the Web Deploy remote service to synchronize Web sites and Web servers. In this topic, the remote computer will be the source, and the local computer will be the destination. The following outline lists the main steps that you will take.
Use the Web Deploy getDependencies method to get the dependencies that exist on the source.
Pre-install or configure the dependent components on the destination site or server.
Make a backup of the destination.
Create and test the Web Deploy command that you will use. The -whatif operation setting will enable you to see the outcome of the operation without actually making any changes.
Run Web Deploy on the destination server to synchronize the remote Web site or Web server source to the local computer.
Verify the results.
Each of these steps is explained in the following sections.
Before you perform a sync operation, you will have to determine which components must be pre-installed or configured manually on the destination server or Web site. To do this, run a command in the following format on the source:
msdeploy -verb:getDependencies -source: <sourceProvider>
To determine the value of <sourceProvider>, see the following table.
For Web sites, substitute the metabase path or Web site name that you will be using. For example, if you want to examine the dependencies on an IIS 6.0 Web site that has a site ID of 1, you would use the following command:
IIS Version Web site Web server
appHostConfig="Default Web Site"
msdeploy -verb:getDependencies -source:metaKey=/lm/w3svc/1
If you are synchronizing a Web site, review the output of the getDependencies method to look for any script maps or installed components that are being used by the site. For example, if Windows authentication is being used by the Web site, you will see this entry:
<dependency name="WindowsAuthentication" />
Caution If the source is an IIS 7 Web site, make sure that you examine the Web.config file for script maps. The getDependencies method will not detect any script maps that are in a Web.config file.
Based on the output of getDependencies, create a list of the components that you must install or configure on the destination. During a sync operation, Web Deploy will detect the dependencies that are being used and report whether they are installed on the destination. For detailed steps about how to analyze the output of the getDependencies method, see Viewing Dependencies.
Use the list from the previous step to install or configure any necessary components on the destination server or site. For example, the following components could be in use on your source Web site:
Based on this analysis, you must install these components and modules on the destination before you perform a synchronization.
Before you perform a synchronization operation, make a backup of the destination. Making a backup lets you restore the state of your server easily, even in a test scenario. You can name the backup in any way that is meaningful to you (in the following examples, the name "PreMsDeploy" is used).
To make a backup on IIS 6.0, type the following command at a command prompt:
iisback /backup /b PreMsDeploy
To make a backup on IIS 7, type the following command at an elevated command prompt:
%windir%\system32\inetsrv\appcmd add backup "PreMsDeploy"
To restore from a backup on IIS 6.0, type the following command at a command prompt:
iisback /restore /b PreMsDeploy
To restore from a backup on IIS 7, type the following command at an elevated command prompt:
%windir%\system32\inetsrv\appcmd restore backup "PreMsDeploy"
To synchronize a Web site or Web server, run a Web Deploy command in the following format on the local destination (not the remote source) computer:
msdeploy -verb:sync -source: <provider> ,computerName= <host> -dest: <provider> -whatif >msDeploySync.log
To determine the value of <provider>, see the following table. Use the same provider for both the -source and the -dest arguments. For compatibility reasons, use the IIS 6.0 provider for both the -source and -dest arguments when you do a sync operation. For Web sites, use the metabase path or Web site name of the Web site that you will be synchronizing.
What to synchronize Synchronize IIS 6.0 to IIS 6.0, or IIS 6.0 to IIS 7 Synchronize IIS 7 to IIS 7
appHostConfig="Default Web Site"
For <host>, use the computer name of the remote source. The computer name (for example, "Server1") will be converted to the default Web Deploy URL of the format http://Server1/MsDeployAgentService. If you are running the Web Deploy remote service on a non-default port or URL, you must specify the full URL.
Add the operation setting -whatif to the command. This will enable you to test the command without actually making any changes.
Finally, redirect the output of the command to a log file so that you will have the results available for easy reference and analysis. For example:
The completed command should resemble the following, which synchronizes two IIS 6.0 Web sites. Note that there is no space between the comma and the computerName provider setting.
msdeploy -verb:sync -source:metakey=lm/w3svc/1,computerName=Server1 -dest:metakey=lm/w3svc/1 -whatif >msDeploySync.log
On the destination server, run the command you have created to test it. Because you are using the -whatif operation setting, no changes will be made.
After you have verified that the output is what you want, run the command on the destination computer again, but without the -whatif operation setting. For example:
msdeploy -verb:sync -source:metakey=lm/w3svc/1,computerName=Server1 -dest:metakey=lm/w3svc/1 >msdeploysync.log
After the sync operation completes, test browse the Web site on the destination server.
If you need help with troubleshooting, see Web Deploy Troubleshooting Techniques.
You synchronized a remote Web site or Web server source to a local computer destination. You chose the appropriate Web Deploy provider based on your version of IIS, and whether you were synchronizing a Web site or a Web server. You identified the remote computer for Web Deploy by using the computerName provider setting. The remote sync operation was made possible by the Web Deploy remote agent service.