Я использую JSch API для подключения к удаленному серверу через SFTP. Мне нужно получить копию папки, которая существует на удаленном сервере, на том же сервере. Есть ли какой-либо метод, реализованный для этого в JSch? Или будьте любезны дать мне совет, как выполнить описанный выше вариант использования. (Я работаю на Scala).
2 ответа
Мы не можем использовать канал «sftp» для выполнения этой задачи, и мы должны использовать канал «exec» для выполнения этой задачи. Используя канал "exec", мы можем выполнять команды Linux следующим образом:
val command = "mkdir testDir"
val channelExec: ChannelExec = session.openChannel("exec").asInstanceOf[ChannelExec]
channelExec.setCommand(command);
channelExec.connect
Для получения более подробной информации перейдите по следующим ссылкам
http://www.programcreek.com/java-api-examples/index.php?api=com.jcraft.jsch.ChannelExec
http://www.journaldev.com/246/java-program-to-run-shell-commands-on-ssh-enabled-system
Спасибо всем участникам
Нет поддержки удаленного копирования файлов в широко распространенных реализациях протокола SFTP (особенно JSch и OpenSSH).
Для SFTP есть расширение copy-file
, но немногие серверы / клиенты поддерживают его.
См. draft-ietf-secsh-filexfer-extensions-00 .
Альтернативы:
- Загрузите папку и повторно загрузите ее в новое место (чистое решение SFTP)
- Используйте команду
cp
в канале "exec" (больше не SFTP, требуется доступ к оболочке)
Похожие вопросы
Новые вопросы
scala
Scala - это язык программирования общего назначения, в основном предназначенный для виртуальной машины Java. Разработанный для краткого, элегантного и безопасного для типов представления общих шаблонов программирования, он сочетает в себе как императивный, так и функциональный стили программирования. Его ключевые особенности: продвинутая система статического типа с выводом типа; типы функций; сопоставления с образцом ; неявные параметры и преобразования; перегрузка оператора; полная совместимость с Java; совпадение