SFTP 並將檔案資料附加到已有文件

SFTP 並將檔案資料附加到已有文件

我是unix新手。我的客戶需要定期向 sftp 伺服器發送一些資料檔案。

SFTP 伺服器上已存在同名檔案。他們想要的是,當我們 sftp 檔案到伺服器時,它會將檔案的資料附加到現有檔案中。

假設舊伺服器上有一個A.dat包含 10 行的檔案。現在我正在做A.dat5 行的 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命令“恢復”檔案傳輸。

相關內容