0

我想编写一些代码,使用 BITS 在同一服务器上的磁盘之间复制非常大的文件(第二个磁盘是 SAN 级别的克隆\快照)。

我研究了 BITS,因为我认为这将是获得进度\传输的完整数据百分比以及恢复功能等的好方法

我有很多托管的 Powershell,我想我会尝试使用内置的 BITS cmdlet,因为这将是一种超级快速的方法,我可以编写包装器来获取我需要的东西等不幸的是我遇到了这个:

从在非交互式上下文(例如 Windows 服务)中运行的进程中使用 *-BitsTransfer cmdlet 时,您可能无法将文件添加到 BITS 作业,这可能会导致挂起状态。要使作业继续进行,必须登录用于创建传输作业的身份。例如,在作为任务计划程序作业执行的 PowerShell 脚本中创建 BITS 作业时,除非启用了任务计划程序的任务设置“仅在用户登录时运行”,否则 BITS 传输将永远不会完成。

通过模拟的 Powershell 运行空间执行任何操作都会引发以下错误:

由于用户尚未登录到网络,因此未执行所请求的操作。指定的服务不存在。(来自 HRESULT 的异常:0x800704DD)”

我的 Web 服务作为 AppPoolIdentity 运行,我在需要做事时模拟。这是有道理的,这不能通过托管的 Powershell 工作,但是任何人都可以想到解决方法吗?如果这不可能,我还有其他选择吗?

我正在考虑使用 BITS Compact Server 作为替代方案,但文档很古老。

4

1 回答 1

1

你有没有想过使用robocopy?使用 /ZB 开关运行对我来说一直很有效,您可以使用 /J 提高性能,它启用无缓冲 I/O。对于输出,也可以使用 /ETA 和 /TEE 运行。

于 2015-06-27T01:30:53.503 回答