2011-01-30 14 views
1

1つのサーバーから別のサーバーに1つの(巨大な)ファイルを取得する必要があり、インターネット接続が遅いです。 ftpプログラムのTransmitを使ってみましたが、ファイルをダウンロードして他のサーバーにアップロードしていると思います。ダウンロードとアップロードを行わずにサーバー間でファイルを転送する

したがって、ファイルをダウンロードしてアップロードすることなく、ftpクライアントまたはMac端末を使用して、あるサーバーから別のサーバーに直接移動する方法はありますか?

+0

http://superuser.com/に属します。一般に、FTPはサーバー間の転送をサポートしているため、タスクが可能でなければなりません。 –

+0

本当ですか?どうやってやるの?あなたがそれを行うことができるアプリケーションやスクリプトを知っていますか?私はグーグルを試みたが成功しなかった。 – Rodrigo

+0

@Eugene:同意しない。 – tchrist

答えて

-1

FTPプロトコルは、このようなサードパーティの転送をサポートしていません。試してみてください:

$ scp host1:file host2:file2 

しかし、私はそれがどのように実装されているのかわかりません。それは、あなたが避けようとしているものであるすべてのものを再び跳ね返すかもしれません。

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

しかし、あなたが本当にしたい:

$ ssh host1 "scp file host2:" 
0

あなたがいずれかのサーバへのシェルアクセスを持っている場合は、単にログインそれは私はそれがあなたの地元のパイプを通してどのルートはすべて、これを行うと思われる、ありますtelnetまたはsshを使用してそのサーバに接続します。シェルで簡単なftpクライアントを起動し、他のサーバーにログインします。ファイルをコピーするには、基本的なftpコマンド(putまたはget)を使用します。しかし、通常、システム管理者はシェルアクセスを困難にする可能性があります。

シェルアクセス権がなくても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とパスワードを持っています!

関連する問題