当前位置: 首页 > Linux

linux下如何优雅的删除垃圾文件

时间:2023-04-07 00:57:30 Linux

不知道你是不是和我一样,一个程序员只需要将自己的电脑文件整理的井井有条,及时删除无用的文件就可以了?如果是的话,那我们就可以愉快的讨论下一篇文章的内容了。如果没有,你可以留下来凑热闹(>-<)。下面就是今天的主角——tmpwatch,它可以帮助我们递归删除给定时间内没有访问过的文件和空目录。当然,我们也可以使用find命令查找并删除超过x天未访问的文件,但是tmpwatch却可以一步到位,何乐而不为呢?默认情况下,tmpwatch根据文件或目录的访问时间来决定删除哪些文件或目录。此外,还可以根据inodechangetime(inodechangetime)和modificationtime(修改时间)进行操作。通常,tmpwatch用于删除/tmp目录中的文件,以及其他地方的其他无用文件,例如旧日志文件。重要警告!!不要在/(根目录)中运行tmpwatch!不要在/(根目录)中运行tmpwatch!!不要在/(根目录)中运行tmpwatch!!!(三则警告!^-^)/目录包含Linux系统运行所必需的重要文件,tmpwatch没有内置保护机制来防止在/目录上运行。那些重要的文件一旦被删除,后果不堪设想!所以小伙伴们在使用这个命令的时候一定要慎重!安装tmpwatch大多数Linux发行版的默认存储库中都提供了tmpwatch的安装:在Fedora上:$sudodnfinstalltmpwatch在CentOS上:$sudoyuminstalltmpwatch在openSUSE上:$sudozypperinstalltmpwatch在Debian及其衍生版本上(例如Ubuntu),tmpwatch也叫tmpreaper:$sudoaptinstalltmpreaper使用tmpwatch/tmpreaper删除指定时间内没有访问过的文件tmpwatch和tmpreaper的用法几乎一样,可以认为是同一个命令.为了描述方便,本文以tmpwatch为例。使用基于Debian系统的朋友可以把下面的tmpwatch改成tmpreaper。1.删除超过X天未访问的文件示例:删除/var/log/文件夹中超过10天未访问的所有文件和空目录tmpwatch10d/var/log/2.删除超过X天未修改的文件如前所述,tmpwatch默认根据访问时间删除文件,现在我们使用-m选项根据修改时间删除文件。示例:删除/var/log/文件夹下超过10天未修改的文件tmpwatch-m10d/var/log/上面两条命令中的d为时间参数,如下:d-daysh-小时m-分钟s-秒默认时间参数是小时。如果要删除过去10小时内没有修改过的文件,可以写成下面的形式:tmpwatch-m10/var/log/3。删除符号链接可以使用-s选项删除符号链接:tmpwatch-s10/var/log/4。删除所有文件(包括常规文件、符号链接和目录)tmpwatch不仅可以删除普通文件,还可以删除一些特殊文件,如符号链接、目录、管道文件等。在这种情况下,您需要使用-a选项:tmpwatch-a10/var/log/5。删除时排除目录如果不想删除目录,可以使用--nodirs选项排除目录被删除:tmpwatch-am10--nodirs/var/log/6。测试删除(不要实际删除任何东西)再说一遍,删除重要目录上的文件时不要急于使用tmpwatch命令!不妨看一下命令运行后被删除的文件,不然删错了会伤脑筋的。.(养成一种好习惯!)可以使用-t进入测试模式:tmpwatch-t30/var/log/CentOS7下载:removingfile/var/log/wtmpremovingdirectory/var/log/pppifemptyremovingdirectory/var/log/tunedifemptyremovingdirectory/var/log/anacondaifemptyremovingfile/var/log/dmesg.oldremovingfile/var/log/boot.logremovingfile/var/log/dnf.librepo.log基于Debian的系统下输出:$tmpreaper-t30/var/log/(PID1803)假装清理目录`/var/log/'。(PID1804)假装清理目录`apache2'。假装删除文件`apache2/error.log'。假装删除文件`apache2/access.log'。假装删除文件`apache2/other_vhosts_access.log'。(PID1804)从递归`apache2'返回。(PID1804)假装清理目录`dbconfig-common'。假装删除文件“dbconfig-common/dbc.log”。(PID1804)从递归向下“dbconfig-common”返回。(PID1804)假装清理目录“dist-upgrade”。(PID1804)从向下递归“dist-upgrade”返回。(PID1804)P重新清理目录`lxd'。(PID1804)从递归向下返回`lxd'。假装删除文件`/var/log//cloud-init.log'。(PID1804)假装清理目录`landscape'.假装删除文件`landscape/sysinfo.log'。(PID1804)从递归向下`landscape'返回。[...]上面的过程并没有真正删除文件,而是模拟删除并告诉你什么文件将被删除。只有当要删除的文件正确时,去掉-t选项,执行tmpwatch,才真正删除。7.强制删除tmpwatch默认情况下,它不会删除当前用户没有写权限的文件。但是如果你必须删除那些文件,你可以使用-f选项强制删除:tmpwatch-f10h/var/log/8。删除时跳过一些文件如果想在删除时保留指定的文件,也就是加入白名单,可以使用--protect选项。假设我们要保留所有txt类型的文件:tmpreaper--protect'*.txt'-t10h/var/log/输出结果:(PID2623)假装清理目录`/var/log/'.(PID2624)假装清理目录“apache2”。假装删除文件“apache2/error.log”。假装删除文件“apache2/access.log”。假装删除文件“apache2/other_vhosts_access.log”。(PID2624)从向下递归“apache2”返回。(PID2624)假装清理目录“dbconfig-common”。假装删除文件“dbconfig-common/dbc.log”。(PID2624)从向下递归“dbconfig-common”返回'.(PID2624)假装清理目录“dist-upgrade”。(PID2624)从递归向下“dist-upgrade”返回。假装删除空目录“dist-upgrade”。条目匹配“--protect”模式跳过。`ostechnix.txt'(PID2624)假装清理目录`lxd'。设置cronjob定时自动删除文件(偷偷告诉你,tmpwatch/tmpreaper和cronjob一起吃比较好。)进入cronjob任务编辑窗口:#crontab-e添加周期性任务:01***/usr/sbin/tmpwatch30d/var/log/上面代码设置tmpwatch每天凌晨1点运行,删除30几天前的文件。不了解cornjob的朋友可以上网搜索它的新手指南。安装tmpreaper后,它会自动创建每日cron作业(/etc/cron.daily/Tmpreaper)。它从/etc/timereaper.conf文件中读取配置并执行它。默认设置是删除超过7天的文件,您可以通过修改TMPREAPER.conf文件中的“TMPREAPER_TIME=7d”来更改此设置。写在最后提醒大家,删除文件时一定要仔细检查路径,以免数据丢失。tmpwatch和tmpreaper的manpages:$mantmpwatch$mantmpreaper----------------梁旭,500强外企Linux开发工程师,Linux布道者,欢迎关注我公众号《良序Linux》干货满满!→《技术干货推送》→《独家资讯分享》→《高手如云社区》如果对我的话题内容感兴趣,也可以关注我的博客:lxlinux.net