同じリモートマシンの大きなファイルをコピーする効率的なソリューションに取り組んでいます。それはFILESERVERと呼ばせてください。その後、別のサーバー(WEBSERVER)からこれらのファイルのコピーをリモートで発行したいので、Windowsエクスプローラで同じリモート共有フォルダにファイルをコピー/ペーストしようとしましたが、ファイル内容を移動する必要はありません私は共有フォルダを使用し、単にWEBSERVERからファイルをコピーすると思った。同じリモートマシンのUNCパスを効率的にコピーする方法
私は次のコードで試してみました。
File.Copy("\\FILESERVER\FOLDER\bigfile", "\\FILESERVER\FOLDER2\bigfile");
これは動作しますが、私はそれが実際にネットワーク経由でファイルの内容を移動していることに気づいた、それは私が避けたかったまさにです。私は組み込みのWindowsのメカニズムでファイルをコピーできるようにするには、FILESERVERにサーバーを実装してファイルをコピーするコマンドを受け取る必要はありません。したがって、私が実装したい動作は、同じエクスプローラで、C#コードから呼び出すことです。だから、.NETでこれを行うことは可能ですか?
編集: 私はXCOPYコマンドを試してみましたが、最初はネットワークを使用していないようでした。 しかし、OSのキャッシングが行われていないことを確認するためにリブートした後、cmdからXCOPYを実行するとProcess Explorer/taskmgrのI/Oは表示されませんが、C#それはコードです。だから私はそれがファイルの内容を取得/書き込みにネットワークを使用すると思うが、奇妙な理由では、これらの診断ツール(taskmgr /プロセスエクスプローラ)で報告されていません。
古くなったシェルオブジェクトでも可能です - https://msdn.microsoft.com/en-us/library/windows/desktop/bb787866(v=vs.85).aspxを参照してください(isn C#の例はありませんが、それはあなたを始められるかもしれません)。標準のWindows Explorerのコピーダイアログを表示しないフラグがあるので、Windowsエクスプローラで使用されているAPIと同じである必要があります。 –
コマンドラインからのCOPYコマンドで動作するか試してみてください。もしそうなら、それを 'proc = ProcessStartInfo(" cmd "、"/c COPY \\ FILESERVER \ FOLDER \ bigfile \\ FILESERVER \ FOLDER2 \ bigfile ")で実行してください。 ... proc.Start(); ' – Codo
XCOPYにもう一度試してみる必要がありますが、ネットワーク経由でコンテンツを移動することに気付きました。私はそれが働いたとのコメントをしましたが、もう一度試してください。 – jorgonor