Как перезаписать файл назначения с помощью netcat, а не добавлять?

223
Preston Roy

У меня есть два сервера Ubuntu, и я буду использовать скрипт (хотя я еще не написал его) на сервере-отправителе для отправки файла abcd.txt всякий раз, когда он изменяется, используя:

 nc 10.10.10.4 3333 < abcd.txt 

На слушающем сервере я использую опцию -k, чтобы постоянно слушать:

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

Моя цель - перезаписать файл на слушающем сервере каждый раз, когда отправляющий сервер отправляет файл. Этого не происходит. Вместо этого весь файл добавляется, что приводит к дублированию строк. Есть ли способ это исправить? Я открыт для выбора, чем с помощью Netcat, но у меня очень мало опыта работы с Linux. Пожалуйста, относитесь ко мне как к новичку.

Также обратите внимание, что я не могу использовать команду sort или uniq для изменения файла abcd.txt, как только он попадет на сервер прослушивания, поскольку файлы очень велики и наложены ограничения по времени. (Скорее всего, файл на конце отправки будет катиться каждые 60 секунд или около того.)

1
Это может быть идея, которую парень Linux может вам помочь потенциально, но со стороны Windows, если есть команда (или служба), которую я должен использовать, которая добавляется, когда мне нужно перезаписать, тогда я бы наложил некоторые правила вокруг процесса, и особенно если это автоматизировано и делает некоторые [стандартные] принудительные вещи, как это. Теперь, если эти события могут быть вызваны много раз за секунду, вам, возможно, придется выйти за рамки правил и сделать их более сложными. Я предполагаю, что проблема заключается в ограничении netcat и вашем методе его использования, так что это мои быстрые мысли, поскольку страница руководства ничего не сказала о перезаписываемых параметрах и т. Д. Pimp Juice IT 6 лет назад 0
Посмотрите, возможно ли, чтобы отправитель отправил `abc.txt` слушателю, а затем удалил` abc.txt`, как только он подтвердил, что слушатель получен, и т. Д. Слушатель помещает данные `abc.txt`, которые он только что получил от отправителя вместо `/ home / temp.txt` (возможно, поместите логику` если существует temp.txt del temp.txt` или добавьте ``отметка времени для имени временного файла, поэтому у каждого есть уникальное имя). Затем он удаляет `/ home / abc.txt`, если он существует, а затем переименовывает` / home / temp.txt` в `/ home / abc.txt` или создает новый файл с содержимым временного файла, или как бы вы ни обрабатывали это с Linux. Только быстрые идеи. Pimp Juice IT 6 лет назад 0

0 ответов на вопрос