Мне нужно скопировать файл .war, который в настоящее время я могу просто открыть через пользовательский интерфейс с помощью « http://server:host/directory/my_file.war ». Так что не хранится на файловом сервере. Я вошел на сервер A, и файл должен быть сохранен на сервере B.

Можно ли вообще загружать файлы с сервера A, которые не сохраняются на файловом сервере с помощью команды scp, на сервер B?

Заранее спасибо.

1 ответ1

5

Нет, scp не поддерживает http: Сначала скопируйте файл на свой компьютер, используя curl или wget (или сохраните его в браузере), а затем используйте scp для копирования из локальной файловой системы.

Если у вас есть доступ к оболочке на сервере B, просто перейдите по ssh к серверу B и запустите там wget чтобы получить файл напрямую. Это лучше в том, что он использует только пропускную способность на serverB и веб-сервере (в случае, если это важно для вас) - см. Ниже альтернативное решение, которое использует гораздо большую пропускную способность.

Или, если по какой-то причине вы не можете загрузить файл напрямую на сервер B, сделайте что-то вроде:

serverA$ wget --output-document=- http://server:host/directory/my_file.war | \
    ssh user@serverB "cat > /path/to/my_file.war"

Это говорит wget выбрать URL-адрес для stdout, а затем ssh отправит эти данные на serverB и перенаправит их в файл. К сожалению, scp не может прочитать из stdin, поэтому вам потребуется доступ к оболочке на serverB, чтобы это работало. Обратите внимание, что если вы сделаете это, вы будете использовать 2x пропускную способность на сервере A (чтобы извлечь файл с веб-сервера, а затем отправить его на сервер B), и вы будете использовать 1x пропускную способность на веб-сервере и сервере B.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .