Có cách nào để làm điều này?
Có cách nào để làm điều này?
Câu trả lời:
Trong tệp logrotate.conf của bạn (hoặc tệp logrotate.d tương đương), hãy thay đổi dòng có nội dung "
rotate 10
(số của bạn có thể khác) đến một số lớn hơn. Điều đó sẽ nói với nó để giữ bản ghi nhiều ngày. Bạn có thể làm cho nó 36500, sẽ kéo dài 100 năm.
Tôi đã tìm kiếm điều này để thực hiện luân chuyển các bản sao lưu cơ sở dữ liệu của mình hàng ngày, hàng tuần và hàng tháng; Vì vậy, tôi xoay tệp hàng ngày nhưng giữ tệp để thực hiện xoay vòng hàng tuần, và tương tự cho luân chuyển hàng năm.
Sử dụng tùy chọn sao chép. Từ hướng dẫn:
copy
sao chép Tạo một bản sao của tệp nhật ký, nhưng không thay đổi bản gốc. Ví dụ, tùy chọn này có thể được sử dụng để tạo ảnh chụp nhanh của tệp nhật ký hiện tại hoặc khi một số tiện ích khác cần cắt bớt hoặc phân tích tệp. Khi tùy chọn này được sử dụng, tùy chọn tạo sẽ không có hiệu lực, vì tệp nhật ký cũ vẫn giữ nguyên vị trí.
Đặt sang một bên rằng xoay vòng liên quan đến việc xóa ... ;-)
Có vẻ như bạn chỉ cần thêm từ 'sao chép' vào tệp thích hợp (có thể là trong /etc/logrotate.d). Ví dụ: tập lệnh logrotate apache2 sẽ trông như thế này:
/var/log/apache2/*.log { hàng tuần mất tích xoay 52 nén trì hoãn đáng chú ý bản sao chia sẻ postrotate if [-f "`. / etc / apache2 / envvars; echo $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; sau đó /etc/init.d/apache2 tải lại> / dev / null fi kết thúc }
Hãy thử điều đó, và xem nếu nó làm những gì bạn muốn.