Nén tệp nhật ký cũ vào một zip-linux


7

Tôi có một thư mục /home/testuser/logchứa các tệp nhật ký của một ngày cũ *.log. Tôi muốn nén tất cả các tệp nhật ký cũ hơn một ngày vào một zip (gzip hoặc tar.gz) và xóa các tệp cũ hơn.

Tôi đã cố gắng tìm đường ống tìm và tar lệnh nhưng không hoạt động


4
Nếu bạn cần làm điều này nhiều hơn một lần, logrotatelà bạn của bạn
sr_

@sr_ Có lẽ bạn có thể mở rộng nó trong một câu trả lời?
Bernhard

Tôi đang dự định đặt một công việc trong tab cron để làm điều này. Tôi nén -> Di chuyển đến vị trí khác. Đây là những gì tôi dự định làm .. nhưng không thể nén tất cả các tệp vào một zip / gz
Ajo Mathew

bạn có ý nghĩa gì khi "xóa các tập tin cũ hơn." , bạn muốn nén rồi xóa những tập tin tương tự đã được nén?
Rahul Patil

xin lỗi vì sự nhầm lẫn đưa ra một ví dụ ví dụ: log1 được tạo ngày hôm nay log2 log3 đã cũ. Nén log2 log3 -> output.gz sau đó xóa log2 và log3
Ajo Mathew

Câu trả lời:


10

Tạo các tệp tar.gz cũ hơn nhật ký một ngày

find /home/testuser/log/ -mtime +1 | xargs  tar -czvPf  /opt/older_log_$(date +%F).tar.gz

Xóa các tệp cũ hơn [Lưu ý: - nếu bên dưới tìm đầu ra là Chính xác thì xóa tiếng vang, sau đó nó sẽ xóa các tệp đó]

find /home/testuser/ -mtime +1 | xargs  -n1 echo rm

3
Đối với phần thứ hai, bạn có thể chỉ cần gõ: find / home / testuser / -mtime +1 -delete
Paul Calabro

1

Mở rộng nhận xét của sr_, tôi đang sử dụng logrotate để quản lý một bãi chứa SQL hàng đêm. Tôi có cấu hình này trong /etc/logrotate.d/mydbdump:

/var/backups/dump.sql {
        daily
        rotate 7
        missingok
        create 640 root root
        compress
}

Về cơ bản, nó lấy /var/backups/dump.sqltệp (thay vào đó bạn sẽ chỉ định tên của tệp logfile của mình), nén nó và đổi tên thành dump.sql.1.gz. Trước đó, nó sẽ quay cũ dump.sql.1.gzđể dump.sql.2.gzvà như vậy, và xóa một lâu đời nhất.

logrotatechính nó thường được gọi bởi cron, vì vậy hãy xem các /etc/cron*thư mục của bạn để kiểm soát khi nó chạy.


1
Đề xuất tuyệt vời, nhưng nó chưa đáp ứng yêu cầu "cho một zip" của OP.
gertvdijk

Tôi có một vài tệp nhật ký log1.log log2.log ý tưởng của tôi là lấy ngày tạo tệp if(created date=current date-1) compress all, move to new location, Delete older files
Ajo Mathew

@ b00tbu9 logrotatelàm điều này cho bạn. Nếu bạn nhìn vào /var/logthư mục của mình và chú ý các *.#.gztệp bạn sẽ thấy kết quả của nó.
domsom

@gertvdijk nếu một tệp zip là một yêu cầu, tôi khuyên bạn nên sử dụng prerotate/ postrotatetùy chọn để hợp nhất thủ công các tệp đầu vào / đầu ra.
domsom
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.