我想使用任何自动化进程将文件从一台服务器复制到另一台服务器。
两台服务器位于不同的环境中,我可以访问这两个环境。
例如,服务器1在env1中,服务器2在env2中
我想将文件从服务器1 C:\test\copy. txt复制到服务器2 C:\test\
注意:使用Windows服务器。
我已经添加了下面的代码使用这个我可以复制文件,如果两个服务器都在同一个VPN,但在我的情况下,两个服务器都在不同的VPN.
public void copyFile()
{
IntPtr admin_token = default(IntPtr);
WindowsIdentity wid_current = WindowsIdentity.GetCurrent();
WindowsIdentity wid_admin = null;
WindowsImpersonationContext wic = null;
try
{
Console.WriteLine("Copying file...");
if (LogonUser("LocalUsername", "LocalDomain", "LocalPass", 9, 0, ref admin_token) != 0)
{
wid_admin = new WindowsIdentity(admin_token);
wic = wid_admin.Impersonate();
System.IO.File.Copy("C:\\test\\copy.txt", "\\\\Server2\\test\\copy.txt", true);
Console.WriteLine("Copy succeeded");
}
else
{
Console.WriteLine("Copy Failed");
}
}
catch (System.Exception se)
{
int ret = Marshal.GetLastWin32Error();
Console.WriteLine(ret.ToString(), "Error code: " + ret.ToString());
Console.WriteLine(se.Message);
}
finally
{
if (wic != null)
{
wic.Undo();
}
Console.ReadLine();
}
}
}
4条答案
按热度按时间uinbv5nw1#
将其中一台服务器Map为网络驱动器并使用XCOPY? checkout :
https://superuser.com/questions/206036/commmand-line-command-to-copy-entire-directory-including-directory-folder-to-a/206037
2ledvvac2#
你可以写一个脚本,像这样:
您唯一需要做的就是与用户
yourUser
共享test文件夹并执行脚本。7d7tgy0s3#
如果您在这两台服务器上都有权限,并且都支持FTP服务器(Windows服务器上的IIS允许此操作),则这可能是一种可能的解决方案。
在启用FTP的情况下,你可以编写一个简单的程序,它可以在任何一台机器上运行,也可以在另一台机器上运行。这将允许你在两台服务器之间移动文件。许多编程语言都支持FTP操作,C#通过
FtpWebRequest
类支持FTP操作,其文档可以在here中找到。m0rkklqb4#
您可以尝试以下代码(您必须实现模拟器类https://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User):
上面的代码假定您获得了具有所需权限的用户。