
我是unix新手。我的客戶需要定期向 sftp 伺服器發送一些資料檔案。
SFTP 伺服器上已存在同名檔案。他們想要的是,當我們 sftp 檔案到伺服器時,它會將檔案的資料附加到現有檔案中。
假設舊伺服器上有一個A.dat
包含 10 行的檔案。現在我正在做A.dat
5 行的 sftp 檔案。所以在sftp之後,SFTP伺服器上的檔案A.dat
應該有15行。
與其他文件相同。另外,如果 SFTP 系統上不存在該文件,則腳本應放置該文件。
任何快速回應都將受到高度讚賞。我當前的sftp
腳本如下所示,它只是放置並覆蓋現有文件。
#!/usr/bin/expect -d
set timeout -1
spawn sftp user@server
expect "sftp>"
send "cd /destinationpath\n"
expect "sftp>"
send "lcd /sourcepath\n"
expect "sftp>"
send "put A.dat\n"
expect "sftp>"
send "exit\n"
interact
您能否協助根據要求更新此腳本。
我了解到SFTP不支援追加,那麼如何使用SSH來實現這一點呢?
答案1
OpenSSHsftp
客戶端不支援追加。
您必須使用另一個 SFTP 用戶端。
或使用 shell 訪問,例如:
cat /sourcepath/A.dat | ssh user@server "cat >> /destinationpath/A.dat"
或者,如果您可以保留完整的本機文件,即使包含原始內容,您也可以使用
reput
命令“恢復”檔案傳輸。