Можно ли в сеансе 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
клиент).