Xoá logfile tự động với find và rm trong Linux

Có hai cách chính để xóa file theo thời gian trong Linux:

1. Sử dụng lệnh find và rm:

Lệnh find có thể được sử dụng để tìm các file dựa trên nhiều tiêu chí, bao gồm thời gian tạo, sửa đổi hoặc truy cập. Sau khi tìm thấy các file cần xóa, bạn có thể sử dụng lệnh rm để xóa chúng.

Ví dụ:

Xóa tất cả các file trong thư mục /home/user/data đã được sửa đổi hơn 30 ngày trước:

find /home/user/data -mtime +30 -type f -exec rm {} \;

Giải thích:

  • find /home/user/data: Tìm kiếm trong thư mục /home/user/data.
  • -mtime +30: Tìm các file đã được sửa đổi hơn 30 ngày trước. Thay dấu + bằng dấu – nếu muốn tìm file từ 30 ngày trước trở lại hiện tại, nếu muốn thay là phút thì đổi mtime thành mmin và tham số +/- tương tự.
  • -type f: Chỉ tìm các file thông thường (regular files).
  • -exec rm {} \;: Thực hiện lệnh rm cho mỗi file được tìm thấy.

2. Sử dụng công cụ quản lý file:

Nhiều công cụ quản lý file, như Nautilus hoặc Dolphin, có chức năng tìm kiếm và xóa file theo thời gian. Bạn có thể sử dụng các công cụ này để dễ dàng xóa file theo thời gian mà không cần phải sử dụng dòng lệnh.

Khi sử dụng lệnh find và rm, hãy cẩn thận với các tùy chọn bạn sử dụng. Lệnh rm sẽ xóa file vĩnh viễn và không thể khôi phục được.

Ngoài ra, bạn có thể sử dụng các công cụ lập lịch như cron để tự động xóa file theo thời gian. Điều này có thể hữu ích nếu bạn cần xóa file thường xuyên.

Ví dụ:

Thêm tác vụ crontab để xóa tất cả các file trong thư mục /home/user/data đã được sửa đổi hơn 30 ngày trước mỗi ngày: (hoặc có thể tạo file .sh chạy dạng script shell)

0 0 * * * find /home/user/data -mtime +30 -type f -exec rm {} \;

Giải thích:

  • 0 0 * * *: Chạy tác vụ vào lúc 00:00 mỗi ngày.
  • find /home/user/data -mtime +30 -type f -exec rm {} \;: Lệnh find giống như ví dụ trước.

Chúc bạn thành công!

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận