ログファイルを継続的にバックアップする方法は?

ログファイルを継続的にバックアップする方法は?

Linuxには、それぞれ約41MBのログファイルを生成するいくつかのアプリケーションがあります。 41MBファイルが完了すると、アプリケーションはからに切り替わり、log.1上書きlog.2を開始します。log.2log.1

log.2新しいファイルサイズが1 MBを超えるたびに別のファイル()をバックアップ(gzipと別の場所に保存)するようにこれらのファイルをバックアップしたいと思いますlog.1

私はファイルが41 MBに達するたびにファイルをバックアップするスクリプトを使用してきましたが、問題は、データがまだ非常に高速で同じファイルに書き込まれている間に、41 MBのファイルバックアップがスクリプトによって処理されることです。数秒間ログデータが失われたため、新しいファイルが約1 MBに達したときに別のファイルの書き込みが完了したことを確認するために、別のファイルをバックアップする代替方法を試しています。

どうすればいいのかご存知ですか?

答え1

これはlogrotateを介して行うことができます。以下のApacheログの例を参照してください。

ステップ1#まず、logrotateがシステムにインストールされていることを確認してください。ほぼすべてのLinuxディストリビューションでデフォルトで使用できます。

ステップ2#は/etc/logrotate_apache.conf次のように作成されます。

#-------------------------------------------------------------------------------------
/var/log/httpd/*log {
    missingok
    minsize 1M
    create
    compress
    rotate 1
    lastaction
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
        Log_dir="/var/log/httpd/Apache_$(date +%F)/"
        # move to other location
        [[ ! -d "${Log_dir}" ]] && /bin/mkdir "${Log_dir}" &&  /bin/mv /var/log/httpd/*.gz "${Log_dir}"
    endscript
}

# system-specific logs may be also be configured here.
#-------------------------------------------------------------------------------------

ステップ3#次のようにCronジョブを設定します。

00 * * * * /usr/sbin/logrotate -f /etc/logrotate_apache.conf

答え2

あなたは試すことができますログの回転、いくつかの例を挙げた。ここ

これサイズオプションを使用すると、ログが指定されたサイズ(41 MBなど)に達したときにログを回転できます。
使用バックスピン回転したログファイルを別の場所に転送するために使用できるカスタムスクリプトを実行するオプション。

関連情報