SFTP 并将文件数据附加到已经存在的文件中

SFTP 并将文件数据附加到已经存在的文件中

我是 unix 新手。我的客户需要定期将一些数据文件发送到 sftp 服务器。

在 SFTP 服务器上,已经存在同名文件。他们想要的是,当我们将文件通过 sftp 传输到服务器时,它会将文件的数据附加到现有文件中。

假设在旧服务器上有一个A.dat包含 10 行的文件。现在我正在处理包含 5 行的 sftp 文件A.dat。因此,在 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命令“恢复”文件传输。

相关内容