Como posso sobrescrever o arquivo de destino que o netcat escreve em vez de acrescentar?

1

Eu tenho dois servidores Ubuntu e vou usar um script (embora eu ainda não o tenha escrito) no servidor de envio para enviar o arquivo abcd.txt sempre que ele mudar usando:

nc 10.10.10.4 3333 < abcd.txt

No servidor de escuta, estou usando a opção -k para mantê-lo sempre em escuta:

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

Meu objetivo é que o arquivo no servidor de escuta seja sobrescrito toda vez que o servidor de envio enviar um arquivo. Isso não está acontecendo. Em vez disso, o arquivo inteiro é anexado, resultando em linhas duplicadas. Existe uma maneira de corrigir isso? Estou aberto a opções do que usando o netcat.

Observe também que não posso usar um comando sort ou uniq para alterar o abcd.txt assim que ele chegar ao servidor de escuta, pois os arquivos são extremamente grandes e as restrições de tempo são impostas. (Provavelmente teremos o arquivo no final do envio rolando a cada 60 segundos ou mais).

    
por Preston Roy 12.07.2017 / 01:39

1 resposta

1

Acho que o problema aqui é que nc não é a solução correta. A escuta nc nunca sai, por isso vai continuar anexando ao arquivo.

Por que não usar scp ou rsync ? Se você tiver sshd em execução na máquina de destino, poderá usar qualquer um deles. Se você não tiver, faça isso ou execute rsync no modo daemon.

Sempre que você acionar scp ou rsync no remetente, o destinatário sobrescreverá o arquivo.

    
por 12.07.2017 / 02:42