2つのシステム間のファイル転送を最適化し、ファイルをトリミングする方法

2つのシステム間のファイル転送を最適化し、ファイルをトリミングする方法

volts.jsonマイコンピュータ1は毎秒電圧データをファイルに書き込みます。

2番目のコンピュータは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では、ログファイルを名前付きパイプに置き換え、ストリームを消費し、ファイルに安全に書き込むデーモンスクリプトを作成することもできます。これにより、データを効果的に制御できます。真実性。

関連情報