Web Deploy (MSDeploy) how to sync a folder
IIS üstündeki virtual directory ve web site ları tek satır komut ile bir başka sunucuya aktarmak.
C:\>iiscnfg /copy /ts webclusternode1 /tu FRESENIUS_IST\administrator /tp sifRedeGir
Backing up server 127.0.0.1
Backup complete.
Mapping local drive E: to admin share on server 127.0.0.1
Mapping local drive F: to admin share on server webclusternode1
Copying backup files...
cmd /c copy /Y E:\system32\inetsrv\metaback\iisreplback.* F:\system32\inetsrv\me
taback
Unmapping local drive E:
Restoring on server webclusternode1
Restore complete.
Unmapping local drive F:
Copy operation complete.
C:\>
IIS6'dan IIS7 ye göç
Ref: http://www.iis.net/learn/publish/using-web-deploy/synchronize-iis-60-web-sites
Yukarıdaki referansa göre önce tüm klasörleri ziple:
msdeploy -verb:sync -source:metakey=lm/w3svc/1 -dest:package=c:\Site1.zip
sonra bu zipi öteki makineye kopyala.
Bir simülasyon yapmak için
-whatif > logAdi.log
anahtarına benzer bir ekle:
msdeploy -verb:sync -source:package=c:\Site1.zip -dest:metakey=lm/w3svc/1 -whatif > msdeploysync.log
çalıştırır ve "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploysync.log" açılarak durumuna bakılır.
Kontrol edelim:
Sorun var.Olmasaydı
Eğer sağlam bir şekilde açılmışsa bunu kalıcı olarak yapmak için:
msdeploy -verb:sync -source:package=c:\Site1.zip -dest:metakey=lm/w3svc/1 > msdeploysync.log
yapacaktık.
Sorunumuz Application Pool'ların aktarımıyla ilgili. Bakalım çözmek için ne yapabiliriz.
Evet şu adres:
MSDEPLOY – Can I use it to migrate my IIS6 to another IIS6? oh yes!
Buna göre önce Application Pool lar için aşağıdaki komutla yedekleyelim:
C:\Program Files\IIS\Microsoft Web Deploy>msdeploy -verb:sync -source:metakey=lm/w3svc/AppPools -dest:archivedir=c:\AppPoolConfig
AppPoolConfig klasörü C:\> dizini içinde oluşacak. Bu dizini hedef sunucudada aşağıdaki kodu çalıştırıp Application Pool'ları oluştururuz.
Dikkat: Varsa önceki poollar silinmiş olacak!
C:\Program Files\IIS\Microsoft Web Deploy>msdeploy -verb:sync -source:archivedir=c:\AppPoolConfig, -dest:metakey=lm/w3svc/AppPools
Artık
c:\Site1.zip
dosyamızı yeni IIS sunucumuzda geri yükleyebiliriz:
C:\Program Files (x86)\IIS\Microsoft Web Deploy V3>msdeploy -verb:sync -source:m
etakey=/lm/w3svc/1,computername=10.130.214.67,username=administrator,password=sifreBuMakine -dest:metakey=/lm/w3svc/3,computername=10.130.214.205,username=administrator,password=sifreOlsun -replace:objectName=metaproperty,match="wwwroot",replace="wwwroot\101"
Azıcık inceleyelim:
msdeploy -verb:sync
uygulama tüm içeriği eşleştirecek.
-verb
parametresinin alabildiği diğer değerler için
Web Deploy Command Line Syntax adresine bakılabilir.
-source
ile dosyaların kaynağı olan IIS sunucusunun ya da dosyanın bulunduğu kaynağı işaret edeceğiz.
:metakey=
ile kaynağın dosya olmadığını bir IIS işaret ettiğimizi belirtiyoruz.
/lm/w3svc/1,
IIS üzerinde ID si 1 olan web site'ı işaret eder.
computername=10.130.214.67, username=administrator, password=sifreBuMakine
ID si 1 olan IIS sunucusunun IP, kullanıcı adı ve şifre bilgilerini belirtiyoruz.
Aynı mantığı hedef makine içinde yapıyoruz.
Ek olarak şuna bir bakalım:
-replace:
ile hedefte yapılacak değişiklikleri belirtiyoruz.
objectName=metaproperty
için yedeklediğimiz zipin içinde
archive.xml
dosyasından bir kısım gösterelim:
<?xml version="1.0" encoding="utf-8" ?>
<MSDeploy.metaKey MSDeploy.ObjectResolver.metaKey="Microsoft.Web.Deployment.MetaKeyObjectResolver" MSDeploy.ObjectResolver.metaProperty="Microsoft.Web.Deployment.MetaPropertyObjectResolver" MSDeploy.ObjectResolver.dirPath="Microsoft.Web.Deployment.DirPathObjectResolver" MSDeploy.ObjectResolver.filePath="Microsoft.Web.Deployment.FilePathObjectResolver">
<metaKey path="/lm/w3svc/1" MSDeploy.path="2" setProperties="1015,1017,1018,1099,1012,1016,9101,6006,1002,4011,1023" MSDeploy.setProperties="1" MSDeploy.MSDeployLinkName="Child1" MSDeploy.MSDeployKeyAttributeName="path" MSDeploy.MSDeployProviderOptions="H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9fB8/In6NX/PXDVjf/7//6//2/8xP9o1/r1/g1fo3vfVFM66qpztvxVT4Zz/JVWV0v8mU7Sn8yr5uiWn72YLw73hnvjNKTddmu6/yzZb5u66wcpS/Xk7KY/l759Zvqbb787N7u5Pzewf1Ps9m9T/fze/d/XfS05zr4LnXw1Hbg/fqyri6LWV5/uWqpwbXTVjV/jN1rpZyyRf7rrLJ2/usus0Xe/HqXWbnOm1/z1/z1fj2g/v92r/Gr/Fr/PqLvM1r/z618OLSbm4e3WvuZze3f2xX/fXDVjR/79X6NXPXM3xG/73mMv/O83/H8CAAD//7UD9MUPAQAA">
<metaProperty name="ServerComment" propertyId="1015" attributes="Inherit" userType="1" dataType="String" value="Default Web Site" MSDeploy.value="8" MSDeploy.MSDeployKeyAttributeName="name">
<rootWebConfig32 path="Default Web Site" MSDeploy.path="2" version="4.0" MSDeploy.version="2" MSDeploy.MSDeployLinkName="Microsoft.Web.Deployment.FrameworkConfigExtensionRootWebConfig32" MSDeploy.MSDeployKeyAttributeName="path" MSDeploy.MSDeployProviderOptions="H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9fB8/In6NX/PXDVjf/7//6//2/8xP9o1/r1/g1fo3vfVFM66qpztvxVT4Zz/JVWV0v8mU7Sn8yr5uiWn72YLw73hnvjNKTddmu6/yzZb5u66wcpS/Xk7KY/l759Zvqbb787N7u5Pzewf1Ps9m9T/fze/d/XfS05zr4LnXw1Hbg/fqyri6LWV5/uWqpwbXTVjV/jN1rpZyyRf7rrLJ2/usus0Xe/HqXWbnOm1/z1/z1fj2g/v92r/Gr/Fr/KZ1VbUE/KRanhcX9/ZPQD4zZ7m5xkhnNIX6euizX/s1/01fo1f48dvV/j1/g1fnP8hv/95vgL//sN/58AAAD//zNOiHsdAQAA" />
<machineConfig32 path="Default Web Site" MSDeploy.path="2" version="4.0" MSDeploy.version="2" MSDeploy.MSDeployLinkName="Microsoft.Web.Deployment.FrameworkConfigExtensionMachineConfig32" MSDeploy.MSDeployKeyAttributeName="path" MSDeploy.MSDeployProviderOptions="H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9fB8/In6NX/PXDVjf/7//6//2/8xP9o1/r1/g1fo3vfVFM66qpztvxVT4Zz/JVWV0v8mU7Sn8yr5uiWn72YLw73hnvjNKTddmu6/yzZb5u66wcpS/Xk7KY/l759Zvqbb787N7u5Pzewf1Ps9m9T/fze/d/XfS05zr4LnXw1Hbg/fqyri6LWV5/uWqpwbXTVjV/jN1rpZyyRf7rrLJ2/usus0Xe/HqXWbnOm1/z1/z1fj2g/v92r/Gr/Fr/KaLbDovlvlJtTwvLu7t/XoA8Js9zc8zQjilXtPXRZv/2K/7a/wav8aP/Xq/xq/xa/zmA3/83xF/73G/4/AQAA//8OZme7HQEAAA==" />
</metaProperty>
<metaProperty name="ServerAutoStart" propertyId="1017" attributes="None" userType="1" dataType="DWord" value="1" MSDeploy.value="8" MSDeploy.MSDeployKeyAttributeName="name" />
<metaProperty name="ServerSize" propertyId="1018" attributes="Inherit" userType="1" dataType="DWord" value="1" MSDeploy.value="8" MSDeploy.MSDeployKeyAttributeName="name" />
<metaProperty name="Win32Error" propertyId="1099" attributes="Volatile" userType="1" dataType="DWord" value="0" MSDeploy.value="9" MSDeploy.MSDeployKeyAttributeName="name" />
<metaProperty name="ServerCommand" propertyId="1012" attributes="Volatile" userType="1" dataType="DWord" value="1" MSDeploy.value="9" MSDeploy.MSDeployKeyAttributeName="name" />
<metaProperty name="ServerState" propertyId="1016" attributes="Volatile" userType="1" dataType="DWord" value="2" MSDeploy.value="9" MSDeploy.MSDeployKeyAttributeName="name" />
<metaProperty name="AppPoolId" propertyId="9101" attributes="Inherit" userType="1" dataType="String" value="DefaultAppPool" MSDeploy.value="8" MSDeploy.MSDeployKeyAttributeName="name" />
<metaProperty name="DefaultDoc" propertyId="6006" attributes="Inherit" userType="2" dataType="String" value="Default.aspx,Default.htm,Default.asp,index.htm,iisstart.htm" MSDeploy.value="8" MSDeploy.MSDeployKeyAttributeName="name" />
Yukarıdaki blokta
metaProperty
anahtarının değerlerinde bir regular expression çalıştırıp
,match="wwwroot"
wwwroot kelimelerini
,replace="wwwroot\101"
"wwwroot\101" ile değiştireceğiz. Böylece hedef sunucuda yeni klasörümüz c:\inetpub\wwwroot\101 olarak belirlenmiş olacak.
Dosya Eşleştirme
msdeploy.exe –verb:sync -source:contentPath="C:\temp\files-to-pub" -dest:contentPath='sayedupdemo/files'
msdeploy.exe
-verb:sync
-source:contentPath="C:\temp\files-to-pub"
-dest:auto
,ComputerName="https://waws-prod-blu-001.publish.azurewebsites.windows.net/msdeploy.axd?site=sayedupdemo"
,UserName='$sayedupdemo'
,Password='thisIsNotMyRealPassword'
,AuthType='Basic'
-enableRule:DoNotDeleteRule
-setParam:value='sayedupdemo',kind=ProviderPath,scope=contentPath,match='^C:\\temp\\files-to-pub$'