我有要求通过一个封闭的networking(LAN)从一台机器传输大量数据(比如10TB以上)! 有没有经过validation的方法来做到这一点?
我想通过FTP? 这是一个正确的方法?
任何build议将是有益的!
谢谢,Prashanth
巨大的数据不是任何协议的问题,问题是你有多less文件和你需要传输(只是一堆数据或文件的权限,所有者等)。 FTP是一个不好的解决scheme,效率低下。 rsync,glusterfs是一件好事(tm)等等…取决于…
如果您有低速连接,局域网上的10 TB将花费大量时间。
如果您可以扩展带宽 – 添加链接聚合,使用服务器绑定(特别是LACP) – 您将赢得一些转移。 此外,请确保您的磁盘驱动器有足够的能力以您需要的速度传输数据。
我认为webdav或rsync也会很好。 即使是CIFS或NFS也不错,在Windows环境下,我可能会使用robocopy + cifs和multithreading来提高拷贝速度。
在Linux上可能是cp + NFS和GNU并行https://savannah.gnu.org/projects/parallel/
我希望对你有用:)
FTP的工作,但我会确保客户端和服务器都是合理的效率,并最重要的是提供恢复传输的能力。
我也build议看看rsync,因为它非常高效,并提供了一系列控制带宽和持续同步的选项(如果有必要的话)。
如果基于Unix,则使用带有–archive选项的Rsync。 它也允许简单的停止和启动。 FTP不。 我的build议是不使用FTP。
在使用windows时,你可能想看看synctoy。 我不确定,但它也允许停止和启动。
而且,千兆位? 如果没有,您是否有能力连接服务器并通过第二个NIC复制? 这可能会加快速度。
在Linux上,我通常在接收端做:
nc -l 43210 | tar xf -
在发送方面:
tar cf - . | dd bs=1M | nc receiving_hostname 43210
然后我在发送端的另一个terminal上运行以获得发送控制台的实时传输统计信息:
while sleep 10; do killall -USR1 dd; done
这只是使用简单的原始TCP传输 – 不需要configurationFTP / NFS / CIFS服务器。 如果双方的磁盘足够快,这将在24小时内通过1Gbpsnetworking传输大约10TB 。
您可能需要在接收端的防火墙上允许连接到使用的端口(在我的示例中为43210)。 它也应该在OSX或FreeBSD等其他的软件上工作。 在Windows上,您可以使用我的“dot_nc”和“dot_nc_l” ,它们是在Windows上用C#实现的nc和nc -l简单等价物,我用它来对Windows上的原始TCP传输进行基准testing。
机器距离彼此有多远? 从第一台机器断开磁盘arrays,是否有可能(实际上),物理连接到第二台机器,并做本地复制?
(或者反过来 – 将第二台机器的磁盘arrays连接到第一台机器上)
我最近通过1 Gbps连接传输了10 TB。 主要问题是始终保持1 Gbps的速度。 在传输大文件时这没什么问题,但在传输小文件时发现问题,因为发件人无法足够快地寻找。
解决scheme是并行运行多个传输。 一些大文件和其余的转移。 它基于:
http://www.gnu.org/software/parallel/man.html#example__parallelizing_rsync
如果您的文件是可压缩的,请确保压缩传输(rsync -z)。
理论上你应该可以在Windows 7上使用GNU Parallel和rsync,但即使你不能,也可以使用将大文件并行传输到小文件的想法。