如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國你可能忘記了刪除計算機上某個目錄中不再需要的文件的操作。
https://linux.cn/article-12284-1.html
作者:Magesh Maruthamuthu
譯者:geekpi

你可能忘記了刪除計算機上某個目錄中不再需要的文件的操作。這可能是“下載”或任何其他目錄。它可能已經增長了一段時間。

即便有足夠的存儲空間,你也應該刪除它們,因爲這會在列出文件時降低系統速度。同樣,當一個目錄中有成千上萬個文件時,它可能很會很臃腫。

當你不知道要檢查的文件名時,很難在特定目錄中找到文件。

我們可以通過結合使用 find 命令和一些組合來做到這一點,我們過去已經寫過一篇文章。

使用 Bash 腳本在 Linux 中刪除早於 “X” 天的文件 / 文件夾

今天,我們將向你展示如何在 Linux 上使用 Tmpwatch 程序來實現這一目標。

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

什麼是 tmpwatch

tmpwatch 會在指定目錄中遞歸刪除指定時間段內未被訪問的文件。通常,它用於自動清除臨時文件系統目錄,例如 /tmp/var/tmp

它只會刪除空目錄、常規文件和符號鏈接。它不會切換到其他文件系統,並避開了屬於根用戶的 lost+found 目錄。

默認情況下,tmpwatch 會根據文件的 atime (訪問時間)而不是 mtime (修改時間)刪除文件。

你可以在 tmpwatch 命令中添加其他參數來更改這些行爲。

警告: 請不要在 / 中運行 tmpwatchtmpreaper,因爲該程序中沒有防止這種情況的機制。

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

如何在 Linux 上安裝 tmpwatch

可以在官方倉庫中按以下方式安裝 tmpwatch

對於 RHEL/CentOS 6 系統,請使用 yum 命令 安裝 tmpwatch
``` 1. $ sudo yum install -y tmpwatch

對於 Debian 和 Ubuntu 系統,請使用 [apt 命令]() 或 [apt-get 命令]() 安裝 `tmpreaper`。
```      1. $ sudo apt-get install tmpreaper

對於 openSUSE 系統,請使用 zypper 命令 安裝 tmpwatch
``` 1. $ sudo zypper install -y tmpwatch

對於 Fedora 系統,請使用 [dnf 命令]() 安裝 [tmpwatch]()。
```      1. $ sudo dnf install -y tmpwatch

請注意: 如果你使用的是基於 Debian 的系統,請使用 tmpreaper 而不是 tmpwatch。所有示例都可以如預期工作。

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

瞭解關鍵選項和參數

atime(文件上次訪問時間):顯示命令或腳本等任意進程最後一次訪問文件中數據的時間。◈ mtime(文件上次修改時間):顯示修改文件內容或保存文件的時間。除非是更改文件屬性,否則大多數情況下 ctimemtime 會相同。◈ ctime(文件上次更改時間):顯示文件元數據更改時間。這意味着更改文件屬性的時間(如所有權或組等)。◈ dirmtime(目錄的上次修改時間):顯示目錄的上一次修改時間。

時間參數定義刪除文件的閾值。

d – 天◈ h – 小時◈ m – 分鐘◈ s – 秒如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

如何使用 tmpwatch 命令刪除一段時間未訪問的文件

正如我在本文開頭所說,tmpwatch 默認根據文件訪問時間(atime)來刪除文件。另外,由於小時是默認參數,因此如果使用小時單位,那麼無需在時間上添加後綴。

例如,運行以下命令以遞歸方式刪除過去 5 個小時未訪問的文件。
``` 1. # tmpwatch 5 /tmp

運行以下命令刪除最近 10 個小時未修改的文件。如果要使用修改時間(`mtime`)來刪除文件,那麼需要在 [tmpwatch]() 命令中添加 `-m` 選項。
```      1. # tmpwatch -m 10 /home/daygeek/Downloads

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

如何使用 tmpwatch 命令刪除超過 “X” 天未訪問的文件

如果要使用天數刪除文件,那麼需要添加後綴 d。以下示例刪除了 30 天以上的文件。
``` 1. # tmpwatch 30d /home/daygeek/Downloads

![如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國](https://img.chainnews.com/material/images/96b10e70c4f99f2a60c8d0577bbdc27f.svg)

如何使用 tmpwatch 命令刪除一段時間內未訪問的所有文件

以下命令將基於修改時間(`mtime`)刪除所有類型的文件,而不僅僅是常規文件、符號鏈接和目錄。
```      1. # tmpwatch -am 12 /tmp

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

如何在 tmpwatch 中排除目錄

以下命令將刪除過去 10 個小時未修改的所有文件,並排除目錄。
``` 1. # tmpwatch -am 10 --nodirs /home/daygeek/Downloads

![如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國](https://img.chainnews.com/material/images/96b10e70c4f99f2a60c8d0577bbdc27f.svg)

如何在 tmpwatch 中排除特定路徑

以下命令將刪除過去 10 個小時未被修改的所有文件,除了下面排除的文件夾。
```      1. # tmpwatch -am 10 --exclude=/home/daygeek/Downloads/Movies /home/daygeek/Downloads

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

如何在 tmpwatch 中排除特定模式

以下命令將刪除過去 10 小時未被修改的所有文件,除了滿足下面列出的模式的文件。
``` 1. # tmpwatch -am 10 --exclude-pattern='*.pdf' /home/daygeek/Downloads

![如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國](https://img.chainnews.com/material/images/96b10e70c4f99f2a60c8d0577bbdc27f.svg)

如何讓 tmpwatch 命令空運行

如果要空運行,請運行以下命令。
```      1. # tmpwatch -t 5h /home/daygeek/Downloads

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

如何設置 cronjob 來使用 tmpwatch 定期刪除文件

默認情況下,它在 /etc/cron.daily/tmpreaper 目錄下有一個 cronjob 文件。該 cronjob 根據位於 /etc/timereaper.conf 中的配置文件工作。你可以根據需要自定義文件。

它每天運行一次,並刪除 7 天之前的文件。

另外,如果你希望常規執行某項操作,那麼可以根據需要手動添加一個 cronjob。
``` 1. # crontab -e
2. 3. 0 10 * * * /usr/sbin/tmpwatch 15d /home/daygeek/Downloads

```

上面的 cronjob 將在每天上午 10 點刪除早於 15 天的文件。


via: https://www.2daygeek.com/how-to-remove-files-older-than-n-days-using-tmpwatch-tmpreaper-on-linux/

作者:Magesh Maruthamuthu 選題:lujun9972 譯者:geekpi 校對:wxy

本文由 LCTT 原創編譯,Linux 中國 榮譽推出

如何使用 Tmpwatch/Tmpreaper 刪除舊文件 | Linux 中國

來源鏈接:mp.weixin.qq.com