我正在寻找一种通过Windows网络共享复制文件的强大方法,该网络共享可以容忍间歇性连接。该应用程序通常用于大型医院的无线,移动工作站,我认为连接可能会暂时丢失或一次丢失几分钟。涉及的文件大小通常约为200KB-500KB。该应用程序是用VB6(ugh)编写的,但我们经常最终使用Windows DLL调用。
谢谢!
答案 0 :(得分:13)
我已经使用了Robocopy,效果非常好。默认情况下,它将每30秒重试一次,直到文件结束。
答案 1 :(得分:5)
尝试使用BITS(后台智能传输服务)。它是Windows Update使用的基础结构,可通过Win32 API访问,专门用于解决此问题。
它通常用于应用程序更新,但在任何文件移动情况下都应该可以正常工作。
答案 2 :(得分:5)
我不清楚你的实际问题是什么,所以我会抛出一些想法。
根据我目前所知,我认为以下伪代码将是我的方法:
sourceFile = Compress("*.*");
destFile = "X:\files.zip";
int copyFlags = COPYFILEFAILIFEXISTS | COPYFILERESTARTABLE;
while (CopyFileEx(sourceFile, destFile, null, null, false, copyFlags) == 0) {
do {
// optionally, increment a failed counter to break out at some point
Sleep(1000);
while (!IsNetworkAlive(NETWORKALIVELAN));
}
首先压缩文件可以保存跟踪您已成功复制的文件以及需要重新启动的文件。它还应该使副本更快(更小的文件总大小和更大的单个文件大小),但代价是双方都有一些CPU功率。一个简单的批处理文件可以在服务器端解压缩它。
答案 3 :(得分:1)
我同意Robocopy作为解决方案......这就是为什么该实用程序被称为“强大的文件复制”
我使用了Robocopy,效果非常好。默认情况下,它将每30秒重试一次,直到文件结束。
默认情况下,重试百万次。对于你的断断续续连接应该是足够的。
它还可以进行可重新启动的传输,你甚至可以在数据包之间有间隙来限制传输,因为你不想使用所有带宽,因为其他程序使用相同的连接(/ IPG交换机)?。
答案 4 :(得分:0)
如何在发送文件之后或之前简单地发送哈希值,并将其与您收到的文件进行比较?这至少应该确保你有一个正确的文件。
如果你想全力以赴,你可以做同样的过程,但对于文件的一小部分。然后当你有所有作品时,在接收端加入它们。
答案 5 :(得分:0)
您可以使用Microsoft SyncToy(免费)。
答案 6 :(得分:0)
嗯,似乎rsync做到了,并且不需要服务器/守护进程/安装我认为它确实 - 只需$ rsync src dst。
答案 7 :(得分:-1)
短信如果有效。