압축하는 동안 텍스트를 파일로 스트리밍

압축하는 동안 텍스트를 파일로 스트리밍

저는 Raspberry Pi의 청취자에게 텍스트 데이터(GY-91 센서의 출력)를 전송하는 Raspberry Pi에 Arduino Nano를 연결했습니다.

P: 974.044 | T: 22.65 | AG: -0.17  -0.10   1.01 | GD:    1.16     0.91     0.98 | MT:  -59.0    94.4   105.1
P: 974.044 | T: 22.65 | AG: -0.17  -0.10   1.00 | GD:    1.34     0.85     1.04 | MT:  -58.3    94.7   105.1
P: 974.066 | T: 22.64 | AG: -0.17  -0.10   1.00 | GD:    0.98     1.10     1.04 | MT:  -58.5    94.9   104.2
P: 974.066 | T: 22.64 | AG: -0.17  -0.10   1.01 | GD:    0.98     0.85     1.16 | MT:  -59.2    94.2   104.2

수신 프로그램은 데이터를 cout으로 전달하는 작은 cpp 프로그램입니다.

./a.out > log.txt센서 데이터를 log.txt파일 로 덤프 할 수 있습니다.

샘플링 속도는 초당 약 50줄(센서 전체 판독값 50회)이며, 이 기록을 약 12시간 동안 실행하고 싶습니다. 말할 필요도 없이 이렇게 하면 상대적으로 큰 로그 파일이 생성됩니다.

이 데이터를 로그 파일에 쓰기 전에 어떻게 동적으로 압축할 수 있습니까?

그런 것 같지만 a.out | gzip > log.txt작동하지 않습니다.

이상적으로는 Windows 컴퓨터에 다운로드하고 프로그램을 사용하여 "압축 해제"할 수 있지만 일부 cygwin 도구를 사용하는 것도 가능합니다.


저는 데이터에 가장 적합한 집계/요약/분석을 결정하기 위해 다양한 알고리즘을 실행할 수 있도록 이와 같은 로그 파일을 만들 계획입니다.

답변1

다음과 같이 시도해 볼 수 있습니다.

./a.out | gzip -c - > log.gz

7-zip으로 압축을 풀 수 있지만 아카이브 손상을 방지하려면 프로그램에 타이머를 구현해야 합니다. Ctrl-C로 중단하면 아카이브가 제대로 닫히지 않습니다.

관련 정보