Я попробовал это, но, конечно, это не работает:

sftp> cp baz.txt foo/bar/
Invalid command.

Есть ли способ сделать это с помощью соединения sftp ?


Конечно, я понимаю, что это тривиально, если я вместо этого соединяюсь с ssh . Однако у меня есть сервер sftp, на котором я не могу этого сделать, поскольку ssh -ing дает мне другой стартовый каталог, и у меня нет власти над (или даже знанием) абсолютных путей на удаленном компьютере; Мне нужно, чтобы все работало относительно каталога автозагрузки, когда я соединяюсь с sftp .

3 ответа3

6

Основной протокол SFTP не поддерживает дублирование удаленного файла.

Существует черновой copy-file расширения файла копии протокола, но он поддерживается только несколькими SFTP-серверами (например, ProFTPD/mod_sftp и SFTP-сервером Bitvise) и несколькими SFTP-клиентами (например, WinSCP ).

Он определенно не поддерживается наиболее распространенным SFTP-сервером OpenSSH. Ни SFTP-клиентом OpenSSH (sftp), т. Е. Нет команды cp или любого другого функционально эквивалентного.


Альтернативы (о которых вы, похоже, знаете и которые вам не помогут):

  • Если у вас есть доступ к серверу через SSH/ терминал, используйте команду shell cp.
  • Если ваш SFTP-сервер поддерживает расширение copy-file , используйте SFTP-клиент, который также поддерживает его.
  • В противном случае единственный вариант - загрузить файл в локальное временное местоположение и загрузить его копию в другой / целевой удаленный каталог.
    Некоторые SFTP-клиенты могут сделать это для вас даже прозрачно за один раз (например, в WinSCP, см. « Дублировать через локальную временную копию» в диалоговом окне «Дублировать»).

(Я автор WinSCP)

0

Протокол sftp не имеет команд для копирования файлов на удаленный сервер. См. Страницу руководства для sftp к списку доступных команд.

-1

Вы можете использовать команды FTP, такие как

sftp> put baz.txt /foo/bar/baz.txt

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