Можно ли в сеансе SFTP скопировать один удаленный файл в другое место на том же удаленном сервере SFTP?

Скажем у меня есть файл /home/user/dir1/file.txt на удаленном SFTP-сервере. Я хочу скопировать этот файл, чтобы сказать /home/user/dir2/file.txtпока я в sftp сеанс (у меня есть сервер, который позволяет только sftp связи, но нет ssh соединения!) подключен к этому серверу?

Возможно ли это сделать? Если да, то какая команда?

Например, следующая команда переименовала бы перемещение файла из одного каталога в другой на удаленном сервере.

sftp> rename dir1/file.txt dir2/file.txt

Я ищу команду, которая скопирует файл из одного каталога в другой на удаленном сервере, если таковой существует.

Обходной путь заключается в том, чтобы загрузить файл из первого местоположения и загрузить во второе местоположение, но это не вариант, когда рассматриваемый файл является большим, и один работает с медленным сетевым подключением!

1 ответ

Решение

Не уверен, что вы подразумеваете под "командой". Вы имеете в виду запрос протокола SFTP? Или команда какого-нибудь SFTP-клиента с поддержкой сценариев или командной строки (например, OpenSSH sftp)?

Протокол SFTP сам по себе не позволяет дублировать удаленный файл. Хотя есть необязательное расширение протокола с именем copy-file это служит цели.

Цитируя copy-file спецификация расширения:

6. Копирование удаленных файлов

byte   SSH_FXP_EXTENDED
uint32 request-id
string "copy-file"
string source-file
string destination-file
bool   overwrite-destination

Этот запрос копирует файл из одного места в другое на сервере. Сервер отвечает SSH_FXP_STATUS.

Не многие SFTP-серверы поддерживают расширение. Я знаю, что делают ProFTPD/mod_sftp и Bitvise WinSSHD. Примечательно, что OpenSSH не (ни сервер, ни sftp клиент).

Другие вопросы по тегам