두 시스템 간의 파일 전송을 최적화하고 파일을 다듬는 방법

두 시스템 간의 파일 전송을 최적화하고 파일을 다듬는 방법

volts.json내 컴퓨터 1은 매초 전압 데이터를 파일에 기록합니다.

두 번째 컴퓨터는 ssh5분마다 연결하여 파일을 가져옵니다. Splunk는 대시보드 파일을 인덱스합니다.

scp이 방법이 유효하다면 괜찮을 것입니다. 다음은 파일을 관리하고 2MB로 늘어나지 않고 작게 유지하는 방법입니다. 오래된 로그를 스크롤하고 최신 로그를 유지하는 명령이 있습니까?

이제 JSON은 다음과 같습니다:

{
  "measuredatetime": "2022-06-27T18:00:10.915668",
  "voltage": 207.5,
  "current_A": 0.0,
  "power_W": 0.0,
  "energy_Wh": 2,
  "frequency_Hz": 60.0,
  "power_factor": 0.0,
  "alarm": 0
}
{
  "measuredatetime": "2022-06-27T18:00:11.991936",
  "voltage": 207.5,
  "current_A": 0.0,
  "power_W": 0.0,
  "energy_Wh": 2,
  "frequency_Hz": 59.9,
  "power_factor": 0.0,
  "alarm": 0
}

답변1

  • 디렉토리를 동기화 상태로 유지하기 위한 ssh일반적인 도구는 입니다 rsync.
  • 로그 파일을 롤업하고 공간을 절약합니다 logrotate. 매우 전문적입니다.
  • ssh간단한 작업을 무인으로 완료하려면 강제 명령을 사용하는 것이 .ssh/authorized_keys좋습니다 .

예:

  • 설정 /etc/logrotate.d/volts파일(클래식 syslog 설정 모방)

  • 사용: 작업별 키 쌍을 생성합니다 . 이 경우에는 제한적으로 보안을 보장할 ssh-keygen필요가 없습니다.autorized_keys

  • , 설정 .ssh/authorized_keys:

    command="rsync --server --sender -logDtpre.iLsf . /path/to/volts/" ssh-rsa AAAAB3NzaC1yc2E[...pubkey...] blabla
    
  • 반대편 에 crontab모임

    rsync -e "ssh -i /path/to/privatekey" -a otherhost:/path/to/volts/ /path/to/volts
    

머신 1에서는 로그 파일을 명명된 파이프로 바꾸고, 스트림을 소비하고 파일에 안전하게 쓰는 데몬 스크립트를 만들 수도 있습니다(예: 동시 I/O를 관리하기 위해 세마포어 사용). 그러면 데이터를 효과적으로 제어할 수 있습니다. 진실성.

관련 정보