如何以一个很快的速度将文件从一台服务器传输到另一台服务器? 现在我正在使用FTP传输文件,但花费了很多时间。 要传输2 GB的文件,大约需要3个小时。 有没有其他程序传输比FTP更快的文件? 服务器位置:一个在印度,另一个在美国。
这是你的位置正常吗? 如果您将2GB转移到其他网站,您通常会看到什么样的速度? 您的位置和远程位置的networking速度是多less?
长距离的传输速度将主要取决于两个位置之间可用的networking带宽以及两者之间的任何跳跃。 您正在通过互联网传输数据,这意味着速度可能会有很大的不同。 互联网不保证最低速度。
你最好的投注是:
SF社区成员可能不会乐意让您回到Unix的石器时代,但是对于较低的协议开销和较好的压缩,您可能需要结合使用dd + netcat + bzip2
。 是的,这是不安全的,所以你必须closures所有的端口,除了两个节点。 没有保证,没有安全,没有authentication…但速度更快。
1 – 使用bzip2
压缩你的文件得到说,file.bz2
2 – 在node2上使用netcat进行监听
nc -l 6668 | dd of=/dir/file.bz2
从节点1推它
dd if=/dir/file.bz2 | nc node2 6668
最后两个可能是同样的事情,但我想从中获得3个步骤。 就像“发送文件”一样简单。
当我读到NAS设备的文件传输性能时,人们通过SMB的速度通常比FTP慢。 我了解到虽然可能会有很多烦人的FTP,但它本身并不是一个缓慢的协议。
我不希望这样做,其他所有的东西都保持不变,只是从FTP到另一个协议的改变,会让你看起来期待的速度提高。
你怎么知道这个问题不是带宽? 你可以尝试使用scp或rsync进行testing,并与FTP比较吗?
你是否在两端启用了TCP窗口缩放? 即使你有很多带宽,美国和印度之间的连接本质上也会有一个巨大的带宽延迟产品 。 如果启用了窗口缩放,并且您仍然看到糟糕的FTP性能,则可以尝试并行运行rsync 。
另外,停止使用FTP。 这是一个可怕的协议。 🙂
如果你试图传输一个2GB的文件,ftp是最干净和快速的协议之一,你也可以安全地使用恢复function,以防在传输过程中出现中断。
如果你想传输大量的小文件,Ftp是一个坏主意,因为你有一个巨大的无用的活动打开和closures每个文件的连接。
Rsync(通过ssh)或scp(sftp)是很好的select,但是您必须考虑encryption会显着降低吞吐量。 你可以使用像河豚('scp -c blowfish'或'rsync -e“ssh -c blowfish''')这样的光照algorithm,但速度总是低于ftp。
Netcat是另一种select,但只能在局域网上使用。
如果你的文件与已经在目的地的文件类似,你可以使用rsync和–fuzzy选项。 Fuzzy将在目标目录中查找一个类似命名的文件,并将其作为复制的起点,仅发送两个文件之间的差异。
举个例子,在这里,我将xwiki-enterprise-web-3.4.war复制到一个已经包含了xwiki-enterprise-web-3.2.1.war的远程目录中。
$ rsync -av --fuzzy xwiki-enterprise-web-3.4.war example.com:Downloads/xwiki-enterprise-web-3.4.war sent 69065310 bytes received 74176 bytes 389518.23 bytes/sec total size is 138567168 speedup is 2.00
您只会注意到文件实际需要传输的内容的大约一半。 如果这些文件更加类似于这个特定情况,那么更好的版本xwiki实际上要比旧的版本大26M。
$ du -sh xwiki-enterprise-web-3.* 107M xwiki-enterprise-web-3.2.1.war 133M xwiki-enterprise-web-3.4.war
而不是为什么不使用rsync或rdiff命令都是传输文件的快速工具。