추가하는 대신 netcat으로 작성된 대상 파일을 덮어쓰는 방법은 무엇입니까?

추가하는 대신 netcat으로 작성된 대상 파일을 덮어쓰는 방법은 무엇입니까?

두 개의 우분투 서버가 있고 전송 서버에서 스크립트를 사용하여(아직 작성하지는 않았지만) 파일이 변경되면 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수신자가 파일을 덮어씁니다 .

관련 정보