Logrotate olddir với ngày


2

Bạn có thể định cấu hình logrotateđể tạo một olddirngày không?

Tôi muốn nhận được bashkết quả tương tự , như thế này:

user@blade1022m:~$ date "+%y%m%d"
120208

Trong /etc/logrotate.conf (mã giả):

/home/mhd-01/logs/*.log {
  daily
  missingok
  rotate 62
  olddir /home/mhd-01/logs/archive/${`date "+%y%m%d"`}/
  postrotate
     /etc/init.d/apache2 restart
}

Cảm ơn tất cả!

Câu trả lời:


2

Không thể hack được logrotate.

Tuy nhiên, bạn có thể 'gian lận' và đạt được hiệu quả tương tự bằng cách sử dụng symlinkcron . Trong bạn logrotate.confthiết lập olddirđể /home/mhd-01/logs/olddir/và tạo ra một cronjob hàng ngày có quyền này:

mkdir /home/mhd-01/logs/archive/$(date "+%y%m%d")
ln -sf /home/mhd-01/logs/archive/$(date "+%y%m%d") /home/mhd-01/logs/olddir/

Hãy chắc chắn rằng cronjob mới này chạy trước công việc logrotate - hoặc gắn nó /etc/cron.daily/với một số ở phía trước (ví dụ 01_linkrotate:) hoặc đặt nó chạy vào nửa đêm (00:00)


Một biến thể của bộ giải pháp này, không có liên kết tượng trưng, ​​sẽ sử dụng cronđể di chuyển nội dung của olddirkho lưu trữ. Các cronjob, chạy sau logrotate hoặc vào cuối ngày (23:59), sẽ làm như sau:

mkdir /home/mhd-01/logs/archive/$(date "+%y%m%d")
mv /home/mhd-01/logs/olddir/* /home/mhd-01/logs/archive/$(date "+%y%m%d")/

Nó có thể được gửi nhiều hơn để tạo liên kết tượng trưng từ một prerotatekhối. Không cần cronjob riêng ....
Gert van den Berg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.