Cron 作業刪除超過 3 天的文件

Cron 作業刪除超過 3 天的文件

我需要使用 3 個不同目錄中的 cron 作業刪除超過 3 天的檔案。 (這 3 個目錄是父目錄/a/b/c/1& /a/b/c/2&的子目錄/a/b/c/3)這可以透過 crontab 中的一行來完成嗎?

答案1

這很簡單(儘管請注意,這會根據超過 3 天前的修改時間進行,因為建立時間僅在使用特殊工具的某些檔案系統上可用):

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete

一旦您確定它找到了您要刪除的文件,請刪除#先前的文件。-delete

要讓它由 cron 運行,我可能只需要創建一個可執行腳本(添加一個 shebang -#!bin/sh到文件的第一行並使用 使其可執行chmod a+x),然後將其放在適當的cron目錄中,例如/etc/cron.daily/etc/cron.weekly。當然,前提是您不需要更具體的時間表並且這些目錄存在於您的發行版上。

更新

如下所述,該-delete選項find不太便攜。 POSIX 相容的方法是:

find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +

#當您確定擁有正確的檔案時,再次刪除。

更新2

引用自史蒂芬·查澤拉斯評論以下:

請注意,它具有(如果有的話)不存在的-exec rm {} +競爭條件漏洞。-delete所以不要在其他人可寫的目錄上使用它。一些發現還可以-execdir緩解這些漏洞。

答案2

使用的話你會更好tmpwatch

tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp.

相關內容