使用tmpwatch命令删除文件

tmpwatch命令参数说明

-u, –atime 基于访问时间来删除文件,默认的。

-m, –mtime 基于修改时间来删除文件。

-c, –ctime 基于创建时间来删除文件,对于目录,基于mtime。

-M, –dirmtime 删除目录基于目录的修改时间而不是访问时间。

-a, –all 删除所有的文件类型,不只是普通文件,符号链接和目录。

-d, –nodirs 不尝试删除目录,即使是空目录。

-d, –nosymlinks 不尝试删除符号链接。

-f, –force 强制删除。

-q, –quiet 只报告错误信息。

-s, –fuser 如果文件已经是打开状态在删除前,尝试使用“定影”命令。默认不启用。

-t, –test 仅作测试,并不真的删除文件或目录。

-U, –exclude-user=user 不删除属于谁的文件。

-v, –verbose 打印详细信息。

-x, –exclude=path 排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。

-X, –exclude-pattern=pattern 排除某规则下的路径。

tmpwatch命令的关键选项和参数

atime (File Last Access Time):文件最后一次被访问的时间;

mtime (File Last Modify Time):文件内容最后一次被修改的时间;

ctime (File Last Change Time):文件元数据最后一次被修改的时间,即文件相关属性被修改的时间,多数情况下 mtime 和 ctime 值相同,但是诸如文件所有者、权限、所属组这类不涉及内容的属性被修改时则只会影响 ctime;

dirmtime (Directory Last modification time):目录最后一次被修改的时间。

时间参数:

d:单位为天;

h:单位为小时;

m:单位为分钟;

s:单位为秒。

tmpwatch命令示例

tmpwatch 默认根据文件访问时间(atime)来删除文件。由于小时是默认参数,如果使用小时单位,那么无需在时间上添加后缀。

例如,运行以下命令删除最近5个小时未被访问的文件。

# tmpwatch 5 /tmp

如果要使用修改时间(mtime)来删除文件,那么需要在 tmpwatch 命令中添加 -m 选项。

运行以下命令删除最近10个小时未被修改的文件。

# tmpwatch -m 10 /home/david/Downloads

如果要使用天数删除文件,那么需要添加后缀d。以下示例删除30天内没有被访问的文件。

# tmpwatch 30d /home/david/Downloads

以下命令将删除最近12个小时未被修改的所有类型的文件,而不仅仅是常规文件、符号链接和目录。

# tmpwatch -am 12 /tmp

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

# tmpwatch -am 10 –nodirs /home/david/Downloads

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

# tmpwatch -am 10 –exclude=/home/david/Downloads/Movies /home/david/Downloads

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

# tmpwatch -am 10 –exclude-pattern=’*.pdf’ /home/david/Downloads

运行以下命令测试删除(不实际删除任何内容)

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

使用 tmpwatch 定期删除文件,下面的crontab将在每天上午 10 点删除早于15天的文件。

# crontab -e

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