移动和复制远程文件

时间:2016-08-30 17:09:15

标签: c# .net smb

我需要使用C#备份位于远程计算机上的文件。

例如:“\ server1 \ docs \ test.txt”需要复制或移动到“\ server1 \ docs \ backup \ test.txt”。

问题:当我使用File.Copy时,是否会将文件从服务器移动到我的机器,然后再移回服务器 - 基本上是通过网络将文件往返?

我想避免往返。

详细信息:这两台计算机都是Windows操作系统,位于同一个域中。

注意:我希望你们知道我已经搜遍了这个问题的答案,然而,我发现了相反的答案。我想肯定地知道。谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

您应该从服务器运行此命令以避免数据往返。请记住,如果您尝试处理的文件位于同一个硬盘驱动器上,移动它们将比复制它们更快。

答案 1 :(得分:0)

只要查看C#(http://referencesource.microsoft.com/#mscorlib/system/io/file.cs,4a0905e7dc32d77d)的源代码,File.Copy就会调用Win32Native.CopyFile函数。说实话,我不确切知道它做了什么,我的意思是我从未看过代码,但我猜这里没有魔法,它从远程计算机读取字节并写入另一台远程计算机。

修改

另一种方法是通过powershell登录远程服务器(您可以通过C#调用ps脚本)并执行命令以复制到第二台计算机。