Es gibt keinen Befehl in OpenSSH sftp
, um Dateien in ein Remote-Verzeichnis zu verschieben.
Was Sie tun können, ist:
- Verwenden Sie
sftp
put
, um die Dateien hochzuladen (wie Sie es bereits tun) und dann Verwenden Sie den Shell-
rm
Befehl, um die Dateien zu löschen, nachdem siesftp
fertig sind (dh nachEOD
):rm $SOURCE_FILE
Oder verwenden Sie nach dem Senden
!
, um vomsftp
Skript zum Shell zu gelangenput
:send "!rm $SOURCE_FILE\r" expect "sftp>"
Natürlich ist dies keine atomare Lösung. Wenn eine Datei zwischen put
und eingefügt wird rm
, geht sie verloren. Bei einer atomaren Lösung müssen Sie die Dateien in einem lokalen Verzeichnis iterieren und sie einzeln hochladen und löschen. Für eine robuste Lösung müssen Sie auch prüfen, ob ein Upload erfolgreich war.