c# - 如何在同一台远程机器中有效地复制 UNC 路径

标签 c# .net wmi unc

我正在研究一种在同一台远程机器上复制大文件的高效解决方案,我们称它为 FILESERVER。然后,我想从另一台服务器 (WEBSERVER) 远程发布这些文件的副本,所以我尝试使用 Windows 资源管理器将文件复制/粘贴到同一个远程共享文件夹中,我注意到它不需要通过网络,所以我认为使用共享文件夹并简单地从 WEBSERVER 复制文件就可以做到。

因此,我尝试使用以下代码。

File.Copy("\\FILESERVER\FOLDER\bigfile", "\\FILESERVER\FOLDER2\bigfile");

这行得通,但我注意到它实际上是通过网络移动文件内容,而这正是我想要避免的。如果我可以使用内置的 Windows 机制来完成,我不想在 FILESERVER 中实现服务器来接收复制文件的命令。所以我想实现的行为与 Explorer 一样,从我的 c# 代码中调用它。那么,可以在 .NET 中执行此操作吗?

编辑: 我尝试了 XCOPY 命令,起初它似乎没有使用网络。 但是在重新启动以确保它不涉及任何操作系统缓存之后,我注意到当我从 cmd 执行 XCOPY 时它没有在 Process Explorer/taskmgr 中显示任何 I/O,但是,当我从我的 C# 代码执行此命令时确实如此。所以我认为它确实使用网络来获取/写入文件内容,但出于奇怪的原因,这些诊断工具(taskmgr/Process Explorer)中没有报告它。

最佳答案

使用 PSEXEC 并在远程计算机上使用本地文件夹路径运行副本。

关于c# - 如何在同一台远程机器中有效地复制 UNC 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40106837/

相关文章:

powershell - WMI/WQL 查询 powershell 中的双反斜杠

c# - 在 asp.net c# 环境中以上一页作为内容发送电子邮件

c# - Scrollable Control中的Scroll/Scroll有什么用?

c# - Environment.Exit() 和 Application.Shutdown() 有什么区别?

c# - 我实现 IEnumerator 和 IEnumerable 的类不会转到 foreach 语句

C#线程创建问题

python 2.7 : wmi module: Creating an interactive process on a remote system

wmi - 无法通过 GETOBJECT ("winmgmts:"获取 WMI 对象)

c# - 端口是从 SQL Server 自动收集的吗?

c# - 如何增加堆大小以在 Visual Studio 2017 中运行 .NET Core 1.x/2.x 测试?