追加するのではなく、netcatで作成されたターゲットファイルを上書きする方法は?

追加するのではなく、netcatで作成されたターゲットファイルを上書きする方法は?

2つのUbuntuサーバーがあり、トランスポートサーバーでスクリプトを使用して(まだ作成していませんが)ファイルが変更された場合は、abcd.txtファイルを送信します。

nc 10.10.10.4 3333 < abcd.txt

リスニングサーバーは、-k常にリスニングを維持するオプションを使用します。

nc -k -l 3333 > /home/abcd.txt

私の目標は、送信サーバーがファイルを送信するたびに受信サーバーのファイルを上書きすることです。このようなことは起こりませんでした。代わりにファイル全体が追加され、重複した行が生成されます。この問題を解決する方法はありますか? netcatを使用する以外のオプションも開いています。

また、ファイルが非常に大きく、タイムアウトがあるため、abcd.txt が受信サーバーに到達した場合、sort または uniq コマンドを使用して abcd.txt を変更することはできません。 (おそらく転送側で60秒ごとにファイルをローリングします。)

答え1

ここでの問題は、これがnc正しい解決策ではないということです。リスナーはnc終了しないため、ファイルに追加され続けます。

なぜ使用しscpないのですrsyncか?sshdターゲットシステムですでに実行されている場合は、これらのいずれかを使用できます。まだ実行していない場合は、これを実行するか、rsyncデーモンモードで実行してください。

scp側面を開始または送信するたびに、rsync受信者はファイルを上書きします。

関連情報