Передача файлов между серверами без загрузки и выгрузки - PullRequest
1 голос
/ 30 января 2011

Мне нужно получить один (огромный) файл с одного сервера на другой, и у меня медленное интернет-соединение. Я попытался использовать Transmit, программу ftp, но я считаю, что она загружает файл и загружает его на другой сервер.

Итак, есть ли способ перенести его напрямую с одного сервера на другой, используя клиент ftp или терминал Mac, без необходимости загружать и загружать файл?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

Если у вас есть доступ к оболочке к одному из серверов, просто войдите на этот сервер, используя telnet или ssh. Запустите простой FTP-клиент в оболочке и войдите на другой сервер. Используйте базовую команду ftp (put или get) для копирования файла. Однако обычно системные администраторы затрудняют доступ к оболочке.

Если у вас нет доступа к оболочке, но у вас есть веб-сервер с 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, когда закончите - у вас есть имя пользователя и пароль!

0 голосов
/ 30 января 2011

Протокол FTP не поддерживает сторонние передачи, подобные этой.Вы можете попробовать:

$ scp host1:file host2:file2

Но я не знаю, как это реализовано.Это может снова отразить все через вас, чего вы пытаетесь избежать.То есть, я подозреваю, что это делает это, которое маршрутизирует все через локальный канал:

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

Но вы действительно хотите:

$ ssh host1 "scp file host2:"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...