一份菜单

如何在Linux中使用tmpreaper删除早于N天的文件

tmpreaper是用于删除在一定时间内未访问的文件的工具。

在Linux桌面发行版上,这非常适合清理目录,例如“~/Downloads”,文件会在一段时间内累积。

在Linux服务器发行版上,这对于清除不再需要的旧日志文件或备份文件很有用。

tmpreaper递归搜索并删除在一定时间内未访问的文件和目录。

警告: 在安装tmpreaper并开始使用它之前,请确保您了解运行tmpreaper的含义,因为它将删除系统中符合给定条件的所有文件。不要在/(根目录)上运行tmpreaper,这可能会删除保持系统运行所需的关键文件。 tmpreaper程序中没有内置保护措施,可以防止您在根目录上运行,因为这会使在chroot环境中使用tmpreaper变得困难。

1.安装tmpreaper

在基于Ubuntu的基于debian的系统上,使用apt-get:

$ sudo apt-get install tmpreaper

在基于RPM的系统(例如CentOS和RedHat)上,使用yum:

$ sudo yum -y install tmpreaper

Tmpreaper命令语法:

$ tmpreaper [options]  <time_spec> <dirs>

2.删除早于N天的文件

要删除5天前的文件,请使用“5d” as timespec.

For example, the following command will delete files from the 〜/下载 folder that are not accessed in the last 5 days.

$ tmpreaper 5d 〜/下载

3.删除N天未修改的文件

默认情况下,tmpreaper将基于以下内容删除文件“Access Time”. You can use “-m”告诉tmpreaper根据以下选项删除文件的选项“Modification time”.

以下命令将删除“下载”文件夹中5天未修改的文件。

$ tmpreaper -m 5d 〜/下载

您还可以将以下字符用于time_spec参数

  • d – for days
  • h – for hours
  • m – for minutes
  • s – for seconds

4.使用-s删除符号链接

使用-s option to remove symbolic links also, not just files and directories.

除了清理文件和目录之外,以下命令还将清理与给定时间规范匹配的符号链接。

$ tmpreaper -s 5h 〜/下载

5.使用-a选项删除所有文件类型

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

$ tmpreaper -a 5m 〜/下载

6.做一次Dryrun–使用-t选项测试删除

使用-t option, to test what files are going to be deleted.

当您在重要目录上运行此文件时,这是非常有用的,您想确切删除要删除的文件,然后再真正删除它。

此选项不会删除文件。

$ tmpreaper -t 5d 〜/下载
(PID 5415) Pretending to clean up directory `/home/lakshmanan/Downloads'.
(PID 5416) Pretending to clean up directory `.tmp_versions'.
(PID 5416) Back from recursing down `.tmp_versions'.

7.使用-f选项强制删除文件

使用-f选项强制删除文件。通常,不会删除当前用户(EUID)拥有的没有写访问权的文件。使用-f也会删除这些文件。

$ tmpreaper -f 5h 〜/下载

8.唐’t使用以下方式删除与模式匹配的文件–protect Option

使用–protect ‘<shell_pattern>’ to 保护the pattern matching files from deletion.

例如,以下命令将删除除“.c” files.

$ tmpreaper  --protect '*.c' -t 5h ~/my_prg
Entry matching `--protect' pattern skipped. `hello.c'
Pretending to remove file `./.hello.o'.

9.在Cron中使用tmpreaper

默认情况下,安装tmpreaper时,它将在 crontab (/etc/cron.daily/tmpreaper)。它将从/etc/tmpreaper.conf中读取选项,并基于这些选项执行tmpreaper命令。

/etc/tmpreaper.conf是自我解释的,并且易于理解。默认情况下,它将删除/ tmp中7天前存在某些文件类型的文件。如果您打算使用此功能,请删除‘SHOWWARNING=true’/etc/tmpreaper.conf中的一行。

一旦删除该行,tmpreaper将每天运行以清理指定的目录,而无需用户干预。

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 9 评论… 加一 }

  • 穆萨卜 2013年10月22日,上午12:43

    如何在Rhel 6上获得它

  • 西瓦 2013年10月22日,上午2:12

    不错的工具…..但是任何与删除相关的内容并将其放入crontab会让我更加好奇…

  • 查理·库纳斯特(Charly Kuehnast) 2013年10月22日,上午11:13

    删除/ tmp中超过7天的所有内容:

    / usr / bin / find / tmp / -type f -mtime +7 -exec rm -f {} \;

  • 奇库塔 2013年10月22日,下午12:18

    我有一个问题:为什么大多数系统管理员不关注日志文件和常规文件,而在某些情况下却引起麻烦?避免将来出现问题的最好方法是防止它们发生。意思是清理系统,不要等到文件系统100%充满。大多数UNIX系统会轮转日志文件。但是,应该删除30天以上的日志文件,但保留它们以备不时之需。
    rm命令可以毫无问题地删除任何文件,但用户可能会使用一些奇怪的文件名,而rm无法删除它们。如果是这种情况,请使用inode命令毫无问题地删除文件。那么,当UNIX风格的OS拥有全部功能时,为什么还要使用其他任何实用程序(例如tmpreaper)呢?在我的书中,那是自找麻烦。
    如果要删除超过N天的文件,请将find命令与inode命令一起使用,并解决问题。

  • 克莱顿·利马 2013年10月23日,上午5:31

    不错的提示!我正在使用带有Epel和Rpmforge存储库的CentOS 6.4发行版,但是它们可以’找到要安装的tmpreaper。

    您可以共享文件进行下载吗?

    提前致谢!

  • 雅各布 2013年10月25日,上午2:06

    tmpwatch在RHEL中达到了相同的结果。在语法上与tmpreaper相同

  • 奇库塔 2013年10月25日,上午9:34

    在UNIX平台上,一个简单的脚本将自动完成该工作。 UNIX从60年代初就存在了,即使在那时,它也具有用于管理的所有工具。问题在于,如今大多数人变得懒惰和无知,并且想要对应用程序执行操作,而他们所要做的只是在复杂的脚本中使用预先存在的UNIX命令工具(如cron)。因此,为什么不使用您自己的脚本来使系统自动化而忘却它呢。您在本文中提到的所有内容都可以使用操作系统随附的UNIX命令和工具来完成。一个好的UNIX管理员就是使用命令行管理和脚本的人。

  • 迈克尔·阿 2013年10月30日,上午1:04

    奇库塔,我相信你’好的系统管理员,我明白你的意思。但是我不’认为我们需要像您建议的那样严格。它’不错,有tmpreaper / tmpwatch之类的东西,它增加了管理事物的可能性,并为我们提供了另一种选择。一世’m sure we’d使用UNIX并不太满意’六十年代的命令集。这就是进化,要么接受要么放弃。没有人强迫您使用新功能。所以活着就活下去

  • 奇库塔 2013年11月1日下午2:44

    您说的是michaelA……但是,您在这里使用Linux的原因是谁知道多长时间,并且像大多数Linux用户一样,并且不知道Linux也源自AT&T UNIX系统V。您知道,Solaris,HP-UNIX,IBM AIX,Digital Ultrix,Linux(所有版本),Berkeley BSD都源自AT&T UNIX,由Bell Labs(AT&T)在1970年代末期进行了尝试,并提供了他们想在UNIX品牌中包含的功能。 Linux是赫尔辛基的Linus Torvalds开发的一种业余爱好,它是在Intel提出具有UNIX功能的386处理器并在美国之前在欧洲流行之后,与PC机一起使用的一种爱好。也是在美国的SCO公司开发了UNIX之类的OS,并使用编译器和编辑器(如emacs)开发了GNU修改的Linus Torvalds OS,使其成为当今的Linux。就我自己而言,我是一名工程师,之后是一位在计算机中心设计方面拥有丰富经验的系统管理员,这是我在1980年代初期担任VAX / VMS和Ultrix管理员的第一次经验,从那时起,我就参与了所有其他类型的UNIX。以上。我之所以提到在诸如OS之类的UNIX上不需要收割者(不同于Windows)的原因是因为OS具有开发人员或系统管理员想要对UNIX的命令和实用程序进行任何操作的所有工具,例如Linux,必须提供。如果您想使用收割机,那是您的选择;但是,如果操作系统损坏并且无法在单用户模式下使用收割者,该怎么办?然后,唯一的选择就是非常了解操作系统并使用命令行模式来解决问题。我绝不反对任何类型的UNIX中的已知实用程序,但我最喜欢的是命令行,如果您知道如何使用它,并且当然知道通过脚本自动执行系统,该命令行将非常强大。
    收割者已经使用操作系统提供的命令进行了开发,包括Windows。但是,像OS这样的UNIX大多由工业公司使用,并且系统管理员一直在处理诸如删除墙壁文件很长时间而不使用收割机的问题。我认为收割者很好用的地方是Windows和Mac System X,因为大多数用户都不是系统管理员,也不了解操作系统的实质,因此也不知道如何删除已损坏的文件。

发表评论