2011-01-30 83 views
1

我需要从一台服务器获取一个(巨大)文件到另一台服务器,并且我的Internet连接速度很慢。我尝试使用传输,FTP程序,但我相信它正在下载文件并上传到其他服务器。服务器之间传输文件,无需下载和上传

那么,有没有办法直接从一台服务器移动到另一台服务器,无论是使用和FTP客户端或Mac终端,而无需下载和上传文件?

+0

属于http://superuser.com/。一般来说,FTP支持服务器到服务器的传输,所以你的任务应该是可能的。 – 2011-01-30 17:33:02

回答

-1

FTP协议不支持这样的第三方传输。你可以尝试:

$ scp host1:file host2:file2 

但我不知道如何实施。它可能会再次通过你反弹一切,这正是你想要避免的。也就是说,我怀疑它这样做,它通过当地的管道路线的一切:

$ (ssh host1 "cat <file") | (ssh host2 "cat >file") 

但你真的想:

$ ssh host1 "scp file host2:" 
0

如果你有一台服务器shell访问,只需登录到该服务器使用telnet或ssh。在shell中启动一个简单的ftp客户端并登录到其他服务器。使用基本的ftp命令(put或get)来复制文件。通常情况下,系统管理员可能会使shell访问困难。

如果您没有shell访问权限,但您确实拥有带有PHP的Web服务器,那么最简单的方法就是编写一个简单的PHP程序来完成这项工作。上传并从浏览器中触发它。这里有一个我这样写道:

<?php 
// qdftp.php - Quick & Dirty FTP 
// Place this script in a web accessible 
// folder alongside the file you want to send, 
// then invoke it from a browser. 
//=============================== 
$server = "123.123.123.123"; //target server address or domain name 
$user = "username"; //username on target server 
$pass = "password"; //password on target server 
$file = "myfile.zip"; //source file 
//================================ 
$sessid = ftp_connect($server); //connect 
$login_ok = ftp_login($sessid, $user, "$pass"); //login 
if ((!$sessid) || (!$login_ok)): 
    echo "failed to connect: check hostname, username & password"; 
    exit; //failed? bail! 
endif; 
$xfer = ftp_put($sessid, $file, $file, FTP_BINARY); //transfer 
echo "file transfer " . ($xfer)? "succeded" : "failed" ; 
ftp_close($sessid); 
?> 

然后从你的浏览器触发它

http://mysourceserver.com/qdftp.php 

最后一件事:删除qdftp.php当你做 - 它有你userename和密码!

相关问题