1

Web Deploy 同期操作のソース フォルダー ツリーに (何らかの理由で) 存在する場合と存在しない場合がある "コンテンツ" フォルダーがあるとします。

どのskip設定を使用すると、Web Deploy でこのフォルダーの内容を同期させることができますか (フォルダーが存在するかどうかに関係なく、別のスキップ設定を使用して同期するファイルを制御できます)、snyc ターゲットのフォルダーを削除することもありません。同期元に存在しない?

[注 – コマンド例の改行は純粋に表面的なものです。]

このコマンドを使用すると、Web Deploy は同期ターゲットの 'content' フォルダーを削除しようとします (その中にファイルがある場合は失敗します)。

msdeploy.exe
  -verb:sync
  -source:dirPath=%source%
  -dest:dirPath=%target%
  -skip:skipaction=Delete,objectname=filePath,absolutepath=\\content

このコマンドを使用すると、(どうやら) Web デプロイは同期ターゲットの「コンテンツ」フォルダーの削除をスキップしますが、そのフォルダー内のファイルの同期も失敗します (これは実際には非常に合理的です)。

msdeploy.exe
  -verb:sync
  -source:dirPath=%source%
  -dest:dirPath=%target%
  -skip:skipaction=Delete,objectname=dirPath,absolutepath=\\content

実際にこれを行う方法がない場合でも、まったく問題ありません。(しかし、それがなぜなのかについての詳細や参考文献が欲しいです。)

4

2 に答える 2

2

考えられる解決策:

  1. -enableRule:DoNotDeleteRuleスイッチを見てください (ルールの説明を参照)。
  2. このブログ投稿に従って、これらのスキップ パラメータの両方を含める必要がある場合があります。

...子の削除ルールは、親が削除されていない場合にのみ処理されます。したがって、ファイルをスキップしても、ソースに存在しないディレクトリが含まれている場合、ディレクトリ (したがってファイル) はとにかく削除されます。

また、absolutePathparam は正規表現を使用するため、一部の文字 ( など.) はエスケープする必要があることに注意してください。

于 2013-05-15T18:35:41.040 に答える
0

これは不可能のようです。スキップ削除ルールによってフォルダーの削除が禁止されている場合、そのフォルダー内の子ファイルも削除されないため、子ファイルは (完全に) 同期されません。


特にjkoreskaの答えに照らして、これについてもっと考えてみると、私が採用した解決策はひどいものではないと思います. 基本的に問題は、ソースとターゲットのルート フォルダーに一連のフォルダーのサブセットが含まれている可能性があることです。たとえば、完全なセットはbincontent、およびtemplatesです。

ソース (またはターゲット) に存在しない可能性のあるフォルダーの内容を同期する理由は、ソースとターゲットの任意の数のインスタンスに対して同じ Web Deploy コマンドを使用したいからです。

私の解決策は、Web Deploy コマンドを少なくとも 1 回実行した後、ソース インスタンスに常にフォルダーの完全なセットが含まれていることを保証することでした。

于 2013-05-16T13:40:34.057 に答える