我不确定这里是不是提出这个问题的最佳场所,但我认为这完全属于 IT 管理员的领域,所以我把它放在这里。
我们需要与外部客户端共享大型文件(几 GB)。我们需要一种简单且可靠地自动发布这些文件的方法,以便客户端可以下载它们。我们的组织拥有 Windows 桌面和 Windows SBS 2011 服务器。
从客户端的角度来看,从我们的服务器共享可能不是最优的,因为典型的 ADSL 的上行带宽较低(大约 1 Mbps)——客户端需要一整天(4Gb 文件需要 9 小时)才能下载该文件。
上传到第三方服务器对于客户来说很好,但对于我们来说却很痛苦,因为我们必须处理长达数小时的上传。
如果可以做到可靠和自动化,上传到第三方服务器就不会那么麻烦,例如像 Groove/SharePoint Workspace 这样的服务器,只需放入文件并等待它同步 - 但 Groove 有 2Gb 的限制,这不够大。
因此理想情况下我希望服务具有以下属性:
- 必须适用于至少 5Gb 的文件,最好是 10Gb
- 一旦开始传输,它必须是可靠的(即对断开连接和服务中断不敏感)并且完全自动
- 理想情况下,发送者会在转账完成时收到通知。
- 必须与基于 Windows 的系统兼容。
有什么建议么?
答案1
我假设您正在寻找服务器解决方案而不是 SAAS 产品,否则这个问题就会偏离主题。
星火共享是一款可以满足您的需求的开源软件。
但我建议只使用 rsync 镜像到具有所需带宽的远程服务器。您可以在几分钟内设置此系统,它会完成您想要的一切。
只需指定一个源文件夹并将文件放入其中。授予客户端在远程服务器上的 Web 访问权限或 FTP 访问权限等。
我建议启动一个带有无限循环的 shell 脚本,该脚本执行 rsync 并在每次迭代后休眠 1 秒。与 Cronjob 相比,它的优点是不会出现造成干扰的并行上传。对于大文件,这将是我现在看到的一个问题。
Rsync 甚至具有以下优势:文件首先作为带有 . 前缀和随机名称的“隐藏”文件上传,因此客户端只能看到已完成上传并通过完整性检查的文件。
如果文件更新,rsync 也可以有效地处理。
这个脚本对你来说应该是完美的:
#!/bin/bash
while [ 1 = 1 ]
do
rsync -arvz /my/sourcefolder/ [email protected]:/remote/folder/
sleep 1;
done
只需监控其运行,将其置于自动启动等。
您还可以从使用 rsync 进行压缩中受益。
答案2
您可以使用上述内容 - 您可以为此设置一个专用的 Windows 框并为不同的客户端创建文件夹结构,在本地局域网上共享这些文件夹,这些文件夹中的任何文件都会自动开始传输。
您还可以为您的客户提供一个 Web 界面 URL 或一个文件催化剂客户端,以连接到您的服务器并下载这些大文件。
Riverbed 是另一种解决方案(谷歌一下)。
希望这可以帮助