如何将大文件从一台服务器发送到另一台服务器


4

我需要将一个大文件(超过70GB)从加拿大的一台服务器传输到非洲的另一台服务器。

我尝试使用FTP,但是总是在某处断开连接。而且我猜想非洲服务器的网络不稳定,有些文件已上传,但是当我打开它时,文件已损坏。

所以我真的需要一个工具来传输大文件:

  1. 利用带宽,因此我可以尽快上传带宽。
  2. 如果网络不稳定,则该工具可以检测到它,然后删除损坏的数据并重新上传。
  3. 我不想上传到其他地方(像大多数文件共享解决方案一样,上传到他们的服务器并获得一个共享链接)
  4. 我更喜欢可以在两个服务器上都安装的工具。

两台服务器的操作系统均为Windows Server 2008 R2。我无法使用第三者转移渠道。


4
我喜欢rsync这个目的。给它加上--partial标志,如果断开连接,它将保存任何进度。
大卫·史瓦兹

1
双方都使用什么操作系统?
grs 2012年

建议的确切副本不是,因为它没有解决发问者对使用第三方服务促进文件传输的限制。
2012年

@ grs,Windows Server 2008 R2
Robby Shaw

5天后,您想再发送70GB。这些与最初的70GB有100%不同吗?这5天内有多少数据变化?如果增量相对较小,明智的做法是先邮寄前70gb,然后提出一种方案以仅传输增量。
akira 2012年

Answers:


12

BitTorrent可能是您的理想解决方案。

在原始服务器上创建种子,将种子文件传输到目标,然后将其中一个客户端用作bittorrent跟踪器。Bittorrent将文件分成可管理的部分,并确保所有文件都已正确传输。

创建torrent文件显然会有一些开销,并且没有大量的资源可以提高下载速度,但是如果您要处理的是糟糕的链接,那么它可能会非常适合您。


这可能是一个很好的解决方案,因为torrent客户端将自动检测损坏的片段和断开的连接,并继续进行直到完成为止。一方必须设置一个跟踪器,但是µTorrent具有内置的微型跟踪器,因此这不是问题。您可以创建种子文件(很小),将其设置为私有,调整网络设置(您不想不必要地限制它),然后使其运行完成。
Synetech

很好看 但是有安全隐患吗?
罗比·肖

你们救了我的命。它工作正常,一切都很好。但是,我花了一些时间来设置种子文件。我必须先更改高级设置(启用跟踪器),然后将跟踪器地址更改为我的本地地址和端口。
罗比·肖

1
@Robby Shaw-为了满足我的个人好奇心和知识,以这种方式转移70GB花了多少时间?
劳伦特(Larent)2012年

2

FTP太糟糕了-它诞生于1980年代中期,坦率地说,它应该在那里死了。

我可能会从scp(安全副本)开始,它应该是您喜欢的Linux发行版(包括Cygwin)上的openssh或openssh-client软件包的一部分,如果您运行的是不带Cygwin的Windows,则应作为PuTTY软件包的一部分提供。您需要在目标主机上配置ssh服务器,但这非常简单,前提是您具有root / Administrator访问权限(如果没有,则情况会变得越来越难);一旦您运行了ssh服务器,并且可以从源主机访问它,则只需

 user@source $ scp /path/to/file user@destination:/path/to/receiving/directory

这应该可以很好地满足您的观点1,因为scp的开销相当低;它肯定会满足第2点的要求,因为它肯定会检测到失败的连接,并且可以(可能)配置或(肯定)编写脚本以根据需要进行多次重试;它很容易覆盖第3点,因为不需要中间主机或服务;它也很好地涵盖了第4点,因为您可以在两台主机上安装ssh服务器,然后按照您喜欢的任何方向传输文件。您还可以免费获得加密,这可能对您有用也可能不有用。

OpenSSH手册可能是一个不错的起点,如果您最终选择了这条路线,我将很高兴为您提供进一步的帮助-我在使用scp / ssh进行此类传输方面有一些经验(尽管不是来自加拿大)到非洲,反之亦然,我承认不是一个文件大小超过70GB的文件!)

希望这可以帮助!


2

我认为将文件分割成几个小文件,进行传输,然后再将它们重新放在远程服务器上,是一个好主意。

(在Linux上)如何拆分和连接的示例如下:http : //www.techiecorner.com/107/how-to-split-large-file-into-several-smaller-files-linux/

您还应该具有到远程服务器的ssh连接之类的东西,以便可以将它们连接到那里。

有用的工具还可以是“ md5sum”之类的工具,它可以通过比较哈希值来检查传输的文件是否未更改。

您可以编写一个小的Shell脚本来自动执行某些操作,以便您可以轻松传输许多小文件,也可以手动制作并尝试使用少量但较大的块...


是的,如果没有很好的工具。我可能会用你的方法。但是,由于文件超过70GB,因此我需要将其拆分为很多文件,并检查所有文件的MD5总和。对我来说,这听起来太麻烦了:)
Robby Shaw

2

取决于您的上传和下载速度(通常是问题所在),最好的方法是将其写在HD上,然后通过Fedex,DHL或类似方式发送给他人,以便在可能的情况下将其复制到服务器。

例如,如果您的上传速度为1 Mbps,您将上传1M / 8 = 128 KB / s。因此,不算任何“问题”(例如由于加密(例如使用scp)造成的开销或连接不是100%完整速率)的开销,您的文件将需要70G / 128K =超过500.000 s或160h(超过6天)。如果您的连接不是很稳定,则将花费更多时间(可能很多)。


因为我们会定期(每5到10天)传输文件,所以我认为发送高清不是可行的。我的上传速度非常快,但似乎其他站点丢失了数据包
Robby Shaw

1

我会考虑将该文件放到一组DVD或BD-ROM或2.5英寸硬盘上,然后通过航空邮寄它们。

如果您的上传带宽为1 Mbit / s,则70 GB可能需要6天才能通过Internet传输。


因为我们会定期(每5到10天)传输文件,所以我认为发送高清不是可行
Robby Shaw

1

尝试将文件放在ftp站点上,但从非洲使用

wget -c ftp.server.com/filename

-c 将恢复中断的下载


FTP完全过时了
davidbaumann

@davidbaumann“说那个家伙回复了3年前的评论”-另一个家伙回复了3年前的评论。
菲利普·科普利

1

如果您同时使用Mac OS X或Linux(?),则rsync可能是最好的选择。

在此处查看手册页。


抱歉,忘记了它是Windows OS。无论如何还是要感谢
Robby Shaw

0

Mail.ru提供100Gb的空间。您可以通过这种方式传输文件。当然,您必须会说俄语,或者使用翻译工具。


0

我知道这是一个古老的问题,已经有人提出过建议rsync,但是下面的具体示例对我来说很好,可以在服务器之间移动大文件:

rsync -r -v --progress --partial -e ssh user@remote-system:/path/to/remote/file /path/to/local/destination/

由此,您可以在目标端调用此命令,以便rsync将大型文件从远程服务器拉到本地目录。可以将本示例修改为snyc整个目录,而不仅仅是一个文件。


-1

我也有同样的情况。目标服务器是远程的,但在同一国家/地区。所以我使用了Team Viewer-文件传输。它在Windows服务器上完美运行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.