サーバーで ftp を有効にしたくない場合は、RoboCopy を使用してサーバーの同期を維持するという別のオプションがあります。私はこのツールを使用して非常に幸運でした。ColdFusion タグにアクセスする必要cfexecute
があり、サーバーに共有を作成する必要があります。
RoboCopy は、Windows に付属の実行可能ファイルです。こことここでいくつかのドキュメントを読むことができます。いくつかの非常に強力な機能があり、あるサーバーから別のサーバーにディレクトリの内容を「ミラーリング」するように設定できます。このモードでは、フォルダーを同一に保ちます (新しいファイルの追加、削除されたファイルの削除、更新されたファイルのコピーなど)。これが私がそれを使用した方法です。
基本的に、宛先サーバーに共有を作成し、特定のユーザー (ローカルまたはドメイン) にアクセスを許可します。ソース サーバーで、次のような ColdFusion コードを実行します。
- ドライブを宛先サーバーに論理的にマップする
- RoboCopy ユーティリティを実行してファイルを宛先サーバーにコピーします
- 次に、マップされたドライブを切断します
C:\WINDOWS\system32\net.exe
ソース サーバー上の ColdFusion サービスは、およびにアクセスする必要がありますC:\WINDOWS\system32\robocopy.exe
。ColdFusion サンドボックス セキュリティを使用している場合は、これらの実行可能ファイルのエントリを追加する必要があります (ソース サーバーのみ)。基本的なコード例をいくつか示します。
まず、宛先サーバーにマップします。
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use {share_name} {password} /user:{username}"
variable="shareLog"
timeout="30">
</cfexecute>
ここの {share_name} は のようなものになります\\server\c$
。{username} と {password} は明らかなはずです。ユーザー名を として指定できます\\server\username
。 注 管理共有ではなく、作成した共有を使用することをお勧めしますc$
が、それはあなたの例にあったものです。
次に、移行元サーバーから移行先サーバーにファイルをコピーします。
<cfexecute name="C:\WINDOWS\system32\robocopy.exe"
arguments="{source_folder} {destination_folder} [files_to_copy] [options]"
variable="robocopyLog"
timeout="60">
</cfexecute>
ここの {source_folder} は次のようC:\folder1\folder2\folder3\folder4\folder5\
になり、{destination_folder} は\\server\c$\folder1\folder2\folder3\folder4\folder5\
. この引数は、上記の手順の {share_name} で開始し、その後に目的のディレクトリ パスを指定する必要があります。[files_to_copy] はファイルまたはワイルドカード ( *.*
) のリストで、[options] は RoboCopy のオプションです。オプションの完全なリストについては、私が含めたリンクを参照してください。広範です。フォルダー構造をミラーリングするには、/E
および/PURGE
オプションを参照してください。また、通常、生成される出力を制限するオプション/NDL
とオプションも含めます。/NP
そして、/XA:SH
システムと隠しファイルを除外します。そして、/XO
古いファイルをわざわざコピーしないようにします。他のファイル/ディレクトリを明示的に、またはワイルドカードを使用して除外できます。
次に、マップされたドライブを切断します。
<cfexecute name="C:\WINDOWS\system32\net.exe"
arguments="use {share_name} /d"
variable="shareLog"
timeout="30">
</cfexecute>
魅力のように機能します。この方法で RoboCopy を使用したことがない場合は、最初にコマンド ラインを使用してオプション/機能を試してみることを強くお勧めします。次に、好みに合わせて動作するようになったら、それらのオプションを上記のコードに貼り付けます。