SFTP でファイルのデータを既存のファイルに追加する

SFTP でファイルのデータを既存のファイルに追加する

私は UNIX 初心者です。私のクライアントは、定期的にいくつかのデータ ファイルを SFTP サーバーに送信することを要求しています。

SFTP サーバーには、同じ名前のファイルがすでに存在します。必要なのは、ファイルをサーバーに sftp 送信するときに、ファイルのデータを既存のファイルに追加することです。

レガシー サーバーに 10 行のファイルがあるとしますA.dat。現在、5 行の sftp ファイルを作成していますA.dat。したがって、sftp 後、SFTP サーバー ファイルにはA.dat15 行が含まれるはずです。

他のファイルについても同様です。また、ファイルが 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 クライアントを使用する必要があります。

  • または、次のようなシェル アクセスを使用することもできます。

    cat /sourcepath/A.dat | ssh user@server "cat >> /destinationpath/A.dat"
    
  • または、元の内容を含む完全なローカルファイルを保存できる場合は、reput指示ファイルの転送を「再開」します。

関連情報