我正在研究一种在同一台远程机器上复制大文件的高效解决方案,我们称它为 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/