【问题标题】:Transfer files between servers without downloading and uploading在服务器之间传输文件,无需下载和上传
【发布时间】:2011-01-30 17:24:18
【问题描述】:

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

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

【问题讨论】:

标签: macos ftp terminal


【解决方案1】:

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

如果你没有 shell 访问权限,但你有一个带有 PHP 的网络服务器,那么最简单的方法就是编写一个简单的 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 - 它有你的用户名和密码!

【讨论】:

    【解决方案2】:

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

    $ scp host1:file host2:file2
    

    但我不知道它是如何实现的。它可能会再次通过你反弹一切,这是你试图避免的。也就是说,我怀疑它是这样做的,它通过您的本地管道路由所有内容:

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

    但你真的想要:

    $ ssh host1 "scp file host2:"
    

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 2021-06-23
      • 1970-01-01
      • 2011-11-04
      • 2019-11-26
      • 2020-05-14
      • 2019-11-05
      • 2016-03-16
      • 1970-01-01
      相关资源
      最近更新 更多