The steps below demonstrate how to back up all sites, app pools, and settings from IIS 7, IIS 8, and IIS 8.5, then restore to another server.  This process can be especially helpful when building additional web servers in a web farm or for disaster recovery scenarios.  In this example, we will back up from server1 and restore to server2.

On Server1, Open a Command Prompt as admin
cd to this directory: \Windows\system32\inetsrv
to create a backup, run this command: appcmd add backup “<backup name>”
Back up IIS AppCMD

Open c:\windows\system32\inetsrv
Back up IIS backup directory

Copy the backup copy (the name of the backup used in the command) from server1 to the c:\windows\system32\backup directory at server2

Now, at server2
All available backups at a server can be listed by running this command: appcmd list backup
The name of your backup should now be listed at server2
To restore, run this command: appcmd restore backup “<backup name>”
IIS List Backups Restore Backup appcmd

All sites, app pools, and other IIS settings should now be restored to server2

 

A couple key points:

The two servers must run the same version of IIS.  For full functionality, the same versions of IIS modules should also be installed.  For example, if you back up IIS running web platform installer 4.0, then restore to IIS running platform installer 5.0, you may receive prompts to install it or fill the event viewer with warnings.

Before restoring, all certificates used at active sites should be exported from server1, then imported to server2.

If any app pools run as nonstandard users (not built-in or app pool identity users), these may need to be altered at server2.  You can open the application.config and edit users here.

IIS may make automatic backups.  By default, these can be found at \inetpub\history .  Manual backups created with appcmd are added to \Windows\System32\inetsrv\backup