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
受信者はファイルを上書きします。