我需要从一台服务器到另一台服务器获取一个(巨大的)文件,并且我的Internet连接速度很慢。我尝试使用传输,ftp程序,但我相信它正在下载文件并将其上传到其他服务器。
那么,有没有办法将它直接从一个服务器移动到另一个服务器,使用和ftp客户端或Mac终端,而无需下载和上传文件?
答案 0 :(得分: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 - 它有你的用户名和密码!
答案 1 :(得分:-1)
FTP协议不支持这样的第三方传输。你可以试试:
$ scp host1:file host2:file2
但我不知道这是如何实施的。它可能会再次通过你反弹,这是你想要避免的。也就是说,我怀疑它是这样做的,它通过你的本地管道路由所有东西:
$ (ssh host1 "cat <file") | (ssh host2 "cat >file")
但你真的想要:
$ ssh host1 "scp file host2:"