Есть ли способ с помощью sftp скопировать файл из удаленной файловой системы в ту же файловую систему?
Это значит user@hostname:/path/file.txt
к user@hostname:/path/copy_of_file.txt
с удаленной машины? Я выполняю удаленное тестирование, и мне нужно скопировать некоторые большие файлы в удаленную систему без зеркалирования файла в тестовой системе или из нее.
Большинство серверов SFTP не поддерживают дублирование удаленного файла.
Есть copy-file
расширение протокола SFTP. Но он поддерживается только несколькими серверами SFTP. Например, ProFTPD / mod_sftp и Bitvise WinSSHD. Он не поддерживается самым распространенным SFTP-сервером OpenSSH.
Довольно часто, когда у вас есть доступ по SFTP, у вас также есть доступ к оболочке SSH. Затем вы можете скопировать файлы с помощью команд оболочки (например, cp
в * nix).
К сожалению, ответ отрицательный: протокол ftp / sftp не позволяет выгружать удаленную копию.
Не совсем "с использованием sftp", но поскольку sftp использует SSH, нельзя ли просто войти на удаленный сервер с помощью ssh и скопировать файл обычным образом?
Другой альтернативой, которую я бы рассмотрел, было бы использование sshfs, которое позволяет монтировать ваш ssh-каталог как виртуальный диск и использовать на нем такие команды, как cp. Насчет производительности не уверен, но попробовать стоит. Это работает, даже если ваша оболочка отключена чем-то вроде /bin/false
, что может быть очень удобно.
Как указано в предыдущих ответах, протокол не поддерживает то, что вам нужно. Вы можете обойти это, загрузив файл, переименовав загруженную копию на своем компьютере, а затем загрузив ее снова. Это громоздко, но если это делается как часть sftp-скрипта, это не имеет значения.
get file.txt
!mv file.txt copy_of_file.txt
put copy_of_file.txt
Так что у меня была аналогичная проблема, и я нашел ваш ответ в Интернете. Несмотря на то, что тема довольно старая, я все же хочу поделиться своим ответом.
Я также не нашел решения этой проблемы с помощью boardtools, но есть стороннее программное обеспечение, которое неплохо справляется с этой задачей на sysax.com. У них есть программное обеспечение для автоматизации для создания сценария, который может обрабатывать SFTP и другие протоколы.
sftp использует в качестве источника или назначения локальную файловую систему. Итак, короткий ответ, нет.