linux find -mtime_如何使用 Tmpwatch/Tmpreaper 删除旧文件 | Linux 中国

  5595330ac6bd27d2ee6da755ed34215c.png你可能忘记了删除计算机上某个目录中不再需要的文件的操作。https://linux.cn/article-12284-1.html 作者:Magesh Maruthamuthu 译者:geekpi

你可能忘记了删除计算机上某个目录中不再需要的文件的操作。这可能是“下载”或任何其他目录。它可能已经增长了一段时间。

即便有足够的存储空间,你也应该删除它们,因为这会在列出文件时降低系统速度。同样,当一个目录中有成千上万个文件时,它可能很会很臃肿。

当你不知道要检查的文件名时,很难在特定目录中找到文件。

我们可以通过结合使用 find 命令和一些组合来做到这一点,我们过去已经写过一篇文章。

◈ 使用 Bash 脚本在 Linux 中删除早于 “X” 天的文件/文件夹

今天,我们将向你展示如何在 Linux 上使用 Tmpwatch 程序来实现这一目标。

6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

什么是 tmpwatch

tmpwatch 会在指定目录中递归删除指定时间段内未被访问的文件。通常,它用于自动清除临时文件系统目录,例如 /tmp 和 /var/tmp

它只会删除空目录、常规文件和符号链接。它不会切换到其他文件系统,并避开了属于根用户的 lost+found 目录。

默认情况下,tmpwatch 会根据文件的 atime(访问时间)而不是 mtime(修改时间)删除文件。

你可以在 tmpwatch 命令中添加其他参数来更改这些行为。

警告: 请不要在 / 中运行 tmpwatch 或 tmpreaper,因为该程序中没有防止这种情况的机制。

6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何在 Linux 上安装 tmpwatch

可以在官方仓库中按以下方式安装 tmpwatch。

对于 RHEL/CentOS 6 系统,请使用 yum 命令安装 tmpwatch。

$ sudo yum install -y tmpwatch

对于 Debian 和 Ubuntu 系统,请使用 apt 命令 或 apt-get 命令 安装 tmpreaper

$ sudo apt-get install tmpreaper

对于 openSUSE 系统,请使用 zypper 命令 安装 tmpwatch。

$ sudo zypper install -y tmpwatch

对于 Fedora 系统,请使用 dnf 命令 安装 tmpwatch。

$ sudo dnf install -y tmpwatch

请注意: 如果你使用的是基于 Debian 的系统,请使用 tmpreaper 而不是 tmpwatch。所有示例都可以如预期工作。

6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

了解关键选项和参数

◈  atime(文件上次访问时间):显示命令或脚本等任意进程最后一次访问文件中数据的时间。◈  mtime(文件上次修改时间):显示修改文件内容或保存文件的时间。除非是更改文件属性,否则大多数情况下  ctime 和  mtime 会相同。◈  ctime(文件上次更改时间):显示文件元数据更改时间。这意味着更改文件属性的时间(如所有权或组等)。◈  dirmtime(目录的上次修改时间):显示目录的上一次修改时间。

时间参数定义删除文件的阈值。

◈  d – 天◈  h – 小时◈  m – 分钟◈  s – 秒 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何使用 tmpwatch 命令删除一段时间未访问的文件

正如我在本文开头所说,tmpwatch 默认根据文件访问时间(atime)来删除文件。另外,由于小时是默认参数,因此如果使用小时单位,那么无需在时间上添加后缀。

例如,运行以下命令以递归方式删除过去 5 个小时未访问的文件。

# tmpwatch 5 /tmp

运行以下命令删除最近 10 个小时未修改的文件。如果要使用修改时间(mtime)来删除文件,那么需要在 tmpwatch 命令中添加 -m 选项。

# tmpwatch -m 10 /home/daygeek/Downloads 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何使用 tmpwatch 命令删除超过 “X” 天未访问的文件

如果要使用天数删除文件,那么需要添加后缀 d。以下示例删除了 30 天以上的文件。

# tmpwatch 30d /home/daygeek/Downloads 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何使用 tmpwatch 命令删除一段时间内未访问的所有文件

以下命令将基于修改时间(mtime)删除所有类型的文件,而不仅仅是常规文件、符号链接和目录。

# tmpwatch -am 12 /tmp 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何在 tmpwatch 中排除目录

以下命令将删除过去 10 个小时未修改的所有文件,并排除目录。

# tmpwatch -am 10 --nodirs /home/daygeek/Downloads 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何在 tmpwatch 中排除特定路径

以下命令将删除过去 10 个小时未被修改的所有文件,除了下面排除的文件夹。

# tmpwatch -am 10 --exclude=/home/daygeek/Downloads/Movies /home/daygeek/Downloads 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何在 tmpwatch 中排除特定模式

以下命令将删除过去 10 小时未被修改的所有文件,除了满足下面列出的模式的文件。

# tmpwatch -am 10 --exclude-pattern='*.pdf' /home/daygeek/Downloads 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何让 tmpwatch 命令空运行

如果要空运行,请运行以下命令。

# tmpwatch -t 5h /home/daygeek/Downloads 6a9887d7-1b2a-eb11-8da9-e4434bdf6706.svg

如何设置 cronjob 来使用 tmpwatch 定期删除文件

默认情况下,它在 /etc/cron.daily/tmpreaper 目录下有一个 cronjob 文件。该 cronjob 根据位于 /etc/timereaper.conf 中的配置文件工作。你可以根据需要自定义文件。

它每天运行一次,并删除 7 天之前的文件。

另外,如果你希望常规执行某项操作,那么可以根据需要手动添加一个 cronjob。

# crontab -e0 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中国 荣誉推出

e59887d7-1b2a-eb11-8da9-e4434bdf6706.svg
### 回答1: linux find -mtime是一个linux命令,用于查找最后修改时间指定时间之前或之后的文件。其中-mtime参数表示按最后修改时间寻找文件,后面可以接一个正整数n或者负整数-n,表示n天之前或者n天之后进行的修改。例如,find . -mtime -7表示查找最后一周内进行过修改文件,而find . -mtime +7表示查找七天之前有修改文件。 ### 回答2: find -mtime是一个在linux系统上用来搜索文件的命令。它通过指定搜索文件修改时间来查找文件。mtime表示文件修改时间,也就是文件内容或属性的任何更改(包括文件的重写、权限的更改、属性的更改等)。可以在指定的天数内或指定天数前、后更改的文件都可以被搜索到。 语法是: $ find [路径] -mtime [n] 其中,n可以是下面的参数之一: n:恰好n天前的文件。 +n:超过n天前的文件。 -n:在n天内更改的文件。 例如: $ find ./tmp -mtime 0 这会在当前路径下的tmp目录中查找当天修改的所有文件。 $ find ./tmp -mtime +5 这会在当前路径下的tmp目录中查找5天前或更早修改文件。 $ find ./tmp -mtime -5 这会在当前路径下的tmp目录中查找最近5天内修改的所有文件。 注意,这个命令只能搜索指定路径下的文件。如果要搜索更多的子目录,请使用-r参数。 总之,find -mtime命令是一个非常有用的文件搜索命令,它可以帮助管理员/administrator轻松查找所有最近更改过的文件。 ### 回答3: Linux中,find命令是一个非常有用的工具,它可以用于查找文件及目录,并按照各种条件进行过滤。其中,-mtime是find命令的一个选项,用于按照文件最后一次修改时间来进行查找。 -mtime选项后面需要接一个参数,用来指定查找文件时间范围。这个参数可以使用以下格式: -n:查找n天以内修改过的文件。 +n:查找n天以前修改过的文件。 n:查找恰好n天前修改文件。 当使用-n或者+n时,n必须是一个整数,如果省略了符号,则默认为+n。另外,还可以用-cmin来查找文件的创建时间,-atime来查找文件的访问时间。 除了按照时间来查找文件,find命令还支持按照文件大小、文件类型、文件名等进行过滤。这些选项的组合使用,能够准确地找到所需要的文件。 总之,find命令在Linux中有非常广泛的应用场景,它是一款十分强大的工具,对于Linux系统的日常管理、维护和开发都有很大的帮助作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值