web-dev-qa-db-ja.com

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
6
yael

logrotateはローテーションするファイルを圧縮できますが、アプリケーションが書き込むログファイル名が静的でない場合はうまく機能しません(この場合のように、ファイル名に日付のサフィックスがあるため)。 HTTPサーバー(Apache?)を再構成して、日付サフィックスが含まれないようにした場合(つまり、access_logerror_log etc)logrotateを使用できます。 これは、このように構成する方法の例のソリューションです。

ログファイルの命名規則を保持したい場合に備えて解決策もある別の関連する質問があります。 これは、logrotateではなく、ジョブのカスタムスクリプトを使用します。

つまり、これらのファイルの意味は

  • access_log:成功するプレーンHTTPリクエスト
  • error_log:エラーになるプレーンHTTPリクエスト
  • ssl_request_log:成功したHTTPSリクエスト
  • ssl_error_log:エラーが発生するHTTPSリクエスト

(もちろん、あなたの設定はそのロジックから逸​​脱する可能性があります)

10
zagrimsan

Logrotateを使用できます。

アプリケーション構成設定の例は、/etc/logrotate.d/dpkgに保存されているdpkg(Debianパッケージ管理システム)です。このファイルのエントリの1つは次のとおりです。

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

チュートリアル ここ

4
Hamed

Cronに圧縮操作を追加します。次の行をルートのcrontabに追加します(Sudo crontab -e):

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

このコマンドは、古いログでtarアーカイブを作成し、存在するものを削除します。ジョブは毎日0時に開始されます。

1
Sild