Files

如何優化兩個系統之間的文件傳輸並修剪文件

  • June 28, 2022

我有電腦 1volts.json每秒將電壓數據記錄到一個文件中。

我的第二台電腦通過連接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
}
  • 要保持目錄同步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),這樣您就可以很好地控制超過數據完整性。

引用自:https://unix.stackexchange.com/questions/707785