如何优化两个系统之间的文件传输并修剪文件

如何优化两个系统之间的文件传输并修剪文件

volts.json我的计算机 1每秒将电压数据记录到文件中。

我的第二台计算机通过连接ssh并每 5 分钟抓取该文件。 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文件(模仿经典的系统日志设置)

  • 使用 ; 创建任务专用密钥对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),以便您有一个良好的控制超过数据完整性。

相关内容