云网牛站
所在位置:首页 > 初入Linux圈 > 安装和使用Tmpwatch/Tmpreaper以删除在给定时间内未访问的文件

安装和使用Tmpwatch/Tmpreaper以删除在给定时间内未访问的文件

2019-09-17 09:53:12作者:戴进稿源:云网牛站

本文介绍在Linux操作系统上删除在给定时间内未访问的文件,要达到这个目的,可以安装和使用Tmpwatch/Tmpreaper,这是一个命令行实用程序,用于递归删除在给定时间内未访问过的文件,不仅仅是文件,tmpwatch也会删除空目录。默认情况下,Tmpwatch将根据其atime(访问时间)决定应删除哪些文件/目录,当然,你也可以通过使用ctime(inode更改时间),mtime(修改时间)值来更改此行为,通常,Tmpwatch可用于删除/tmp目录和其他未使用的东西(如旧日志文件)的内容。

安装和使用Tmpwatch/Tmpreaper以删除在给定时间内未访问的文件

 

一个重要的警告

在开始使用此工具之前,你必须知道Tmpwatch将根据给定的条件递归删除文件和目录,不要在/(根目录)中运行tmpwatch,此目录包含保持Linux系统运行所需的重要文件,如果你不小心,tmpwatch将删除与整个根目录中的给定条件匹配的重要系统文件和目录,Tmpwatch工具中没有内置的安全保护机制,可以防止你在根目录下运行它,因此,无法撤消操作。

 

安装Tmpwatch

Tmpwatch可在大多数Linux发行版的默认存储库中使用。

在Fedora上,你可以使用以下命令安装它:

$ sudo dnf install tmpwatch

参考:dnf命令_Linux dnf命令使用详解:新一代的RPM软件包管理器

在CentOS上:

$ sudo yum install tmpwatch

在openSUSE上:

$ sudo zypper install tmpwatch

参考:Zypper软件包管理器的基本入门命令

在Debian及其衍生产品(如Ubuntu)上,Tmpwatch有不同的名称,即Tmpreaper,Tmpreaper主要基于Redhat的Erik Troan的“tmpwatch-1.2/1.4”,现在,Paul Slootman正在为Debian维护tmpreaper。

要在Debian、Ubuntu,Linux Mint上安装tmpreaper,请运行:

$ sudo apt install tmpreaper

 

使用Tmpwatch/Tmpreaper删除在给定时间内未访问的文件

Tmpwatch和Tmpreaper的用法几乎相同,如果你使用的是基于Debian的系统,请在以下示例中将“Tmpwatch”替换为“Tmpreaper”。

1、删除超过X天未访问的文件

要删除超过10天的文件,请运行:

tmpwatch 10d /var/log/

上面的命令将删除/var/log/文件夹中未访问超过10天的所有文件和空目录。

2、删除未修改超过X天的文件

就像我已经说过的,Tmpwatch将根据访问时间删除文件,你还可以根据修改时间(mtime)删除文件,例如,以下命令将删除在给定路径中未修改10天的文件:

tmpwatch -m 10d /var/log/

这里,-m表示修改时间,d是<time_spec>参数,<time_spec>参数定义删除文件的年龄阈值,你可以使用以下time_spec参数来删除文件:

1]、d:天。

2]、h:几个小时。

3]、m:分钟。

4]、s:秒。

注:Hours是默认值。

例如,要删除过去10小时内未修改的文件,只需运行:

tmpwatch -m 10 /var/log/

3、删除符号链接

如果要删除符号链接,而不仅仅是常规文件和目录,请使用-s选项:

tmpwatch -s 10 /var/log/

4、删除所有文件

要删除所有文件类型,而不仅仅是常规文件,符号链接和目录,请使用-a选项:

tmpwatch -a 10 /var/log/

上面的命令将删除/var/log/文件夹中的所有类型的文件,包括常规文件,符号链接和目录。

5、从删除中排除目录

有时,你可能希望删除文件,但不删除目录,如果是这样,命令将是:

tmpwatch -am 10 --nodirs /var/log/

上述命令将删除除过去10小时未修改的目录之外的所有文件。

6、执行测试运行而不实际删除任何内容

有时,你可能希望查看实际将要删除的文件,在重要目录上运行Tmpwatch时,这将非常有用,如果是这样,请在测试模式下使用-t选项运行Tmpwatch:

tmpwatch -t 30 /var/log/

CentOS 7服务器的示例输出:

removing file /var/log/wtmp

removing directory /var/log/ppp if empty

removing directory /var/log/tuned if empty

removing directory /var/log/anaconda if empty

removing file /var/log/dmesg.old

removing file /var/log/boot.log

removing file /var/log/dnf.librepo.log

在基于Debian的系统上,你将看到如下输出:

$ tmpreaper -t 30 /var/log/

(PID 1803) Pretending to clean up directory `/var/log/'.

(PID 1804) Pretending to clean up directory `apache2'.

Pretending to remove file `apache2/error.log'.

Pretending to remove file `apache2/access.log'.

Pretending to remove file `apache2/other_vhosts_access.log'.

(PID 1804) Back from recursing down `apache2'.

(PID 1804) Pretending to clean up directory `dbconfig-common'.

Pretending to remove file `dbconfig-common/dbc.log'.

(PID 1804) Back from recursing down `dbconfig-common'.

(PID 1804) Pretending to clean up directory `dist-upgrade'.

(PID 1804) Back from recursing down `dist-upgrade'.

(PID 1804) Pretending to clean up directory `lxd'.

(PID 1804) Back from recursing down `lxd'.

Pretending to remove file `/var/log//cloud-init.log'.

(PID 1804) Pretending to clean up directory `landscape'.

Pretending to remove file `landscape/sysinfo.log'.

(PID 1804) Back from recursing down `landscape'.

这只会模拟操作,但实际上不会删除任何内容,Tmpwatch将执行干运行并显示将在输出中删除哪些文件。

7、强制文件删除

如果要强制删除文件,请使用-f选项:

tmpwatch -f 10h /var/log/

通常,不删除当前用户拥有的文件,没有写访问权限,-f选项也会删除它们。

再次,请在使用Tmpwatch/Tmpreaper命令时小心,在运行之前仔细检查路径以避免数据丢失。

 

帮助使用的命令

有关更多详细信息,请参阅手册页,运行以下命令:

$ man tmpwatch

或者:

$ man tmpreaper

 

相关主题

在Linux中使用rmdir、rm和find命令删除目录的方法

子频道
精选文章
热门文章