Wie kann man die Zieldatei mit netcat überschreiben, anstatt sie anzuhängen?

377
Preston Roy

Ich habe zwei Ubuntu-Server und werde auf dem sendenden Server ein Skript verwenden (obwohl ich es noch nicht geschrieben habe), um die Datei abcd.txt zu senden, wenn sich diese ändert:

 nc 10.10.10.4 3333 < abcd.txt 

Auf dem Listening-Server verwende ich die Option -k, damit er kontinuierlich überwacht wird:

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

Mein Ziel ist es, dass die Datei auf dem Abhörserver jedes Mal überschrieben wird, wenn der sendende Server eine Datei sendet. Das passiert nicht. Stattdessen wird die gesamte Datei angehängt, was zu doppelten Zeilen führt. Gibt es eine Möglichkeit, dies zu beheben? Ich bin offen für Optionen als für netcat, habe aber wenig Erfahrung mit Linux. Bitte behandeln Sie mich als Anfänger.

Beachten Sie auch, dass ich die sortieren- oder uniq-Anweisung nicht verwenden kann, um die abcd.txt zu ändern, sobald sie beim Abhörserver ankommt, da die Dateien extrem groß sind und zeitliche Einschränkungen bestehen. (Wir werden wahrscheinlich die Datei am Sendeende alle 60 Sekunden rollen lassen.)

1
Dies könnte eine Idee sein, mit der ein Linux-Typ Ihnen möglicherweise helfen könnte, aber von der Windows-Seite, wenn ein Befehl (oder ein Dienst) vorhanden ist, den ich anhängen muss, wenn ich ein Überschreiben benötige, würde ich einige Regeln um den Prozess legen und vor allem, wenn es ist automatisiert und macht einige [standard] kraftvolle Dinge wie diese. Wenn diese Ereignisse innerhalb einer Sekunde mehrmals ausgelöst werden können, müssen Sie die Regeln möglicherweise skalieren und komplexer gestalten. Ich nehme an, die Netcat-Einschränkung und Ihre Methode ist das, was das Problem ist. Das sind meine schnellen Gedanken, da die Manpage nichts über das Überschreiben von Params usw. gesagt hat. Pimp Juice IT vor 6 Jahren 0
Prüfen Sie, ob es möglich ist, dass der Absender `abc.txt` an den Listener sendet, und löscht dann` abc.txt`, sobald der empfangene Listener bestätigt wurde usw. Der Listener gibt die `abc.txt`-Daten ab, die er gerade vom Sender erhalten hat stattdessen nach `/ home / temp.txt` (setzen Sie vielleicht die Logik`, wenn temp.txt vorhanden ist, del temp.txt` oder fügen Sie ein `an`Zeitstempel auf den Namen der temporären Datei, sodass jeder einen eindeutigen Namen hat). Es löscht dann `/ home / abc.txt`, falls es existiert, und benennt dann` / home / temp.txt` in `/ home / abc.txt` um oder erstellt eine neue Datei mit dem Inhalt der temporären Datei oder wie auch immer Sie damit umgehen würden dies mit Linux. Nur schnelle Ideen. Pimp Juice IT vor 6 Jahren 0

0 Antworten auf die Frage