Xóa tất cả các tệp cũ hơn X ngày


5

Vì vậy, tôi có một thiết lập cron để tạo bản sao lưu của một thư mục vào tarball mỗi giờ. Tôi muốn thêm vào tập lệnh shell rằng tôi đang sử dụng khả năng xóa các tệp một cách tự động sau khoảng ba ngày, để tôi không có quá nhiều tập tin.

Làm thế nào tôi có thể đi về điều này? Cảm ơn.

Câu trả lời:


8

Thêm dòng này vào tập lệnh (sửa đổi cho phù hợp):

find /path/to/backup_folder -mtime +3 -exec rm {} \;

Điều này giả định tarball dự phòng của bạn và chỉ có tarball dự phòng của bạn nằm trong thư mục đó. Bạn cũng có thể sử dụng tmpwatch tiện ích:

tmpwatch -mf /path/to/backup_folder 72

Vì vậy, nếu tôi chỉ thêm cái này vào (thay đổi đường dẫn thư mục), nó sẽ xóa bất cứ thứ gì cũ hơn ba ngày?
Chiggins

Có, nhưng hãy nhớ rằng nó là đệ quy. Nếu bạn có bất kỳ thư mục nào bên dưới thư mục sao lưu, hãy thêm -maxdepth 1 công tắc điện.
John T

Nếu bạn không chắc chắn, hãy thêm "echo" trước rm và xác minh đầu ra trước.
Chris Nava

@Chris đề nghị tốt!
John T

3

Từ tôi crontab trên máy mac của tôi:

0 13 * * * /usr/bin/find /Users/dharris/.Trash -atime +14 -mindepth 1 -maxdepth 1 -print0 | xargs -0 ls -ltd

Sử dụng -atime thay vì -mtime có nghĩa là nếu tôi truy cập các tập tin, nó sẽ không bị xóa.

Phiên bản của tôi ở đây sử dụng +14 trong hai tuần trì hoãn, đổi thành +3 cho nhu cầu của bạn.


+1 để sử dụng atime ... Tôi cũng luôn làm điều này. Nếu tôi nhìn vào tập tin, nó có thể đủ thú vị để giữ điều này lâu hơn một chút.
Rich Homolka
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.