Linux + 古いログファイルを自動的に圧縮する方法

Linux + 古いログファイルを自動的に圧縮する方法

フォルダの下に/var/log/httpd膨大な容量のファイルが作成されました!

この問題を処理できる古いファイルを自動的に圧縮するには、どのソリューションを使用できますかlogrotate

それでは、そのフォルダの下の古いファイルを圧縮するようにLinuxシステムをどのように設定できますか?

2番目の質問:これらのファイルはどういう意味ですか?

  13:16:50 root@BillGates-Machine:/var/log/httpd # ls -ltr
  -rw-r--r-- 1 root root      7612 Jan 30 05:51 ssl_error_log-20160131
  -rw-r--r-- 1 root root  16170199 Jan 31 03:29 ssl_request_log-20160131
  -rw-r--r-- 1 root root  14677353 Jan 31 03:29 ssl_access_log-20160131
  -rw-r--r-- 1 root root 425621646 Jan 31 03:38 access_log-20160131
  -rw-r--r-- 1 root root     77267 Jan 31 03:38 error_log-20160131
  -rw-r--r-- 1 root root     11233 Feb  7 03:43 ssl_error_log-20160207
  -rw-r--r-- 1 root root  16398688 Feb  7 03:44 ssl_request_log-20160207
  -rw-r--r-- 1 root root  14867381 Feb  7 03:44 ssl_access_log-20160207
  -rw-r--r-- 1 root root 471057664 Feb  7 03:48 access_log-20160207
  -rw-r--r-- 1 root root    101611 Feb  7 03:48 error_log-20160207

答え1

logrotate回転するファイルを圧縮することは可能ですが、アプリケーションによって作成されたログファイル名が静的でない場合(ここでのようにファイル名に日付サフィックスがあるため)、正しく機能しません。これは、日付サフィックスを含めないように(つまり、書き込みのみを行うために)HTTPサーバー(Apache?)を再構成する場合にaccess_log機能します。error_loglogrotate以下は、このように構成する方法を示すサンプルソリューションです。

これは、ログファイルの命名スキームを維持したい場合でも解決策があるもう1つの関連質問です。logrotateを使用せずに操作を実行するカスタムスクリプトを使用します。

簡単に言えば、これらのファイルの意味は次のとおりです。

  • access_log:一般的なHTTPリクエストの成功
  • error_log:エラーが発生した純粋なHTTPリクエスト
  • ssl_request_log:成功したHTTPSリクエスト
  • ssl_error_log:エラーが発生したHTTPSリクエスト

(もちろん、構成がこのロジックから外れる可能性があります)

答え2

ログ回転を使用できます。

アプリケーション構成設定の例はdpkg(Debian Package Management System)です。/etc/logrotate.d/dpkgこのファイルのエントリの1つは次のとおりです。

/var/log/dpkg.log {
      monthly
      size 500M
      rotate 12
      compress
      delaycompress
      missingok
      notifempty
      create 644 root root
}

地図時間ここ

答え3

sudo crontab -ecronに圧縮ジョブを追加します。ルートcrontab()に次の行を追加します。

0 0 * * * tar -czf /var/log/httpd_backup_`date`.tar.gz /var/log/httpd && rm -rf /var/log/httpd/*

このコマンドは、古いログでtarアーカイブを生成し、既存のログを削除します。仕事は毎日0時に始まります。

関連情報