如何在Linux上使用Tmpwatch/Tmpreaper删除早于N天的文件

命令坞
命令坞
命令坞
95
文章
2
评论
2020-05-2215:38:15 评论 306 2294字

如何在Linux上使用Tmpwatch/Tmpreaper删除早于N天的文件

您可能错过了删除计算机上某个目录中不再需要的文件的操作。

这可以是“下载”或任何其他目录。

它可能已经成长了一段时间。

如果没有足够的存储空间,则应删除它们,因为这会在列出文件时降低系统速度。

同样,当一个目录中有成千上万个文件时,它可能很笨拙。

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

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

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

什么是Tmpwatch

Tmpwatch递归地删除指定时间段内未在指定目录中访问的文件。

通常,它用于自动清除用于临时文件系统的目录,例如 /tmp 和 /var/tmp。

它仅删除空目录,常规文件和符号链接。

它不会切换到其他文件系统,并避免属于根用户的“ lost + found”目录。

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

您可以通过在tmpwatch命令中添加其他参数来更改此行为。

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

如何在Linux上安装Tmpwatch

可以从发行官方存储库中按以下方式安装Tmpwatch。

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

$ sudo yum install -y tmpwatch

对于DebianUbuntu系统,请使用  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。所有示例都将按预期工作。

了解关键选项和参数

  • atime(文件上次访问时间)–访问时间表示上一次通过命令或脚本等任何进程访问文件中数据的时间。
  • mtime(文件上次修改时间)– mtime在您修改文件内容或保存文件时显示。除非文件属性被更新,否则大多数时候ctime和mtime会相同。
  • ctime(文件上次更改时间)– ctime显示文件元数据何时更改。这意味着何时更改文件属性(如所有权或组等)。
  • dirmtime(目录的上次修改时间)– dirmtime显示目录的上一次修改时间。

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

  • d –天数
  • h –数小时
  • m –分钟
  • s –秒

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

正如我在文章开头所说,Tmpwatch默认情况下(一次)删除文件,具体取决于访问文件的时间。另外,由于小时是默认参数,因此如果使用小时单位执行操作,则无需在时间上添加后缀。

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

#tmpwatch 5 /tmp

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

# tmpwatch -m 10 /home/bash5/Downloads

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

如果要使用几天删除文件,则需要添加后缀“ d”。以下示例删除了30天以上的文件。

# tmpwatch 30d /home/bash5/Downloads

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

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

# tmpwatch -am 12 /tmp

如何使用Tmpwatch排除目录

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

# tmpwatch -am 10 --nodirs /home/bash5/Downloads

如何使用Tmpwatch排除特定路径

下面的命令将删除除以下目录以外的所有文件,该目录在过去10个小时内没有被修改。

# tmpwatch -am 10 --exclude=/home/bash5/Downloads/Movies /home/bash5/Downloads

如何使用Tmpwatch排除特定模式

以下命令将删除除以下方式以外的所有文件,该方式在过去10个小时内未进行任何修改。

# tmpwatch -am 10 --exclude-pattern='*.pdf' /home/bash5/Downloads

如何使用Tmpwatch命令执行空运行

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

# tmpwatch -t 5h /home/bash5/Downloads

如何设置Cronjob(定时任务)以使用Tmpwatch定期删除文件

默认情况下,它将cronjob文件保留“ /etc/cron.daily/tmpreaper”目录下。该cronjob根据位于“ /etc/timereaper.conf”中的配置文件工作。您可以根据需要自定义文件。

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

另外,如果您希望常规执行某项操作,则可以根据需要手动添加一个联系人。

# crontab -e

0 10 * * * /usr/sbin/tmpwatch 15d /home/bash5/Downloads

上面的cronjob将删除每天上午10点超过15天的文件。

命令坞
Linux Mint 20 发布前一窥 最新资讯

Linux Mint 20 发布前一窥

Ubuntu 20.04 LTS 版本发布了。这对 Linux Mint 用户来说也是一个好消息。一个新的 Ubuntu LTS 版本意味着新的 Linux Mint 主要版本也将很快随之出现。 为什...
使用 AppImage 进行 Linux 软件包管理 分享

使用 AppImage 进行 Linux 软件包管理

AppImage 在自足的环境中分发应用, 它适用于任何 Linux 发行版。 管理 Linux 机器(尤其是远程机器)的一个重要分就是管理和安装软件。当本地应用程序出现问题时,或者文件系统上的某些文...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: