В OpenSSH нет команды sftp
для перемещения файлов в удаленный каталог.
Что вы можете сделать, это:
- используйте
sftp
put
для загрузки файлов (как вы уже делаете), а затем используйте команду shell
rm
для удаления файлов после того,sftp
как сделано (т.е. послеEOD
):rm $SOURCE_FILE
Или используйте
!
для выхода изsftp
оболочки сценарий после отправкиput
:send "!rm $SOURCE_FILE\r" expect "sftp>"
Конечно, это не атомарное решение. Если файл добавлен между put
и rm
, он будет потерян. Для атомарного решения вы должны перебирать файлы в локальном каталоге, загружать и удалять их один за другим. Также для надежного решения вам необходимо проверить, была ли загрузка успешной.