

在Linux中使用Bash脚本删除早于 “X” 天的文件/文件夹
source link: https://www.tuicool.com/articles/7zeaqu2
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

磁盘使用率 监控工具能够在达到给定阈值时提醒我们。但它们无法自行解决 磁盘使用率 问题。需要手动干预才能解决该问题。
如果你想完全自动化此类操作,你会做什么。是的,可以使用 bash 脚本来完成。
该脚本可防止来自 监控工具 的警报,因为我们会在填满磁盘空间之前删除旧的日志文件。
我们过去做了很多 shell 脚本。如果要查看,请进入下面的链接。
我在本文中添加了两个 bash 脚本,它们有助于清除旧日志。
1)在 Linux 中删除早于 “X” 天的文件夹的 Bash 脚本
我们有一个名为 /var/log/app/
的文件夹,其中包含 15 天的日志,我们将删除早于 10 天的文件夹。
$ls -lh/var/log/app/ drwxrw-rw- 3root root24K Oct 1 23:52app_log.01 drwxrw-rw- 3root root24K Oct 2 23:52app_log.02 drwxrw-rw- 3root root24K Oct 3 23:52app_log.03 drwxrw-rw- 3root root24K Oct 4 23:52app_log.04 drwxrw-rw- 3root root24K Oct 5 23:52app_log.05 drwxrw-rw- 3root root24K Oct 6 23:54app_log.06 drwxrw-rw- 3root root24K Oct 7 23:53app_log.07 drwxrw-rw- 3root root24K Oct 8 23:51app_log.08 drwxrw-rw- 3root root24K Oct 9 23:52app_log.09 drwxrw-rw- 3root root24K Oct 10 23:52app_log.10 drwxrw-rw- 3root root24K Oct 11 23:52app_log.11 drwxrw-rw- 3root root24K Oct 12 23:52app_log.12 drwxrw-rw- 3root root24K Oct 13 23:52app_log.13 drwxrw-rw- 3root root24K Oct 14 23:52app_log.14 drwxrw-rw- 3root root24K Oct 15 23:52app_log.15
该脚本将删除早于 10 天的文件夹,并通过邮件发送文件夹列表。
你可以根据需要修改 -mtime X
的值。另外,请替换你的电子邮箱,而不是用我们的。
# /opt/script/delete-old-folders.sh #!/bin/bash prev_count=0 fpath=/var/log/app/app_log.* find$fpath-type d-mtime+10 -exec ls -ltrh{}\;> /tmp/folder.out find$fpath-type d-mtime+10 -exec rm -rf{}\; count=$(cat /tmp/folder.out| wc -l) if [ "$prev_count" -lt"$count" ] ; then MESSAGE="/tmp/file1.out" TO="[email protected]" echo "Application log folders are deleted older than 15 days" >>$MESSAGE echo "+----------------------------------------------------+" >>$MESSAGE echo "" >>$MESSAGE cat /tmp/folder.out|awk'{print $6,$7,$9}' >>$MESSAGE echo "" >>$MESSAGE SUBJECT="WARNING: Apache log files are deleted older than 15 days $(date)" mail-s"$SUBJECT" "$TO" <$MESSAGE rm$MESSAGE/tmp/folder.out fi
给 delete-old-folders.sh
设置可执行权限。
# chmod +x/opt/script/delete-old-folders.sh
最后添加一个 cronjob 自动化此任务。它于每天早上 7 点运行。
#crontab-e 0 7 * * * /bin/bash /opt/script/delete-old-folders.sh
你将看到类似下面的输出。
Application log folders are deleted older than 20 days +--------------------------------------------------------+ Oct 11 /var/log/app/app_log.11 Oct 12 /var/log/app/app_log.12 Oct 13 /var/log/app/app_log.13 Oct 14 /var/log/app/app_log.14 Oct 15 /var/log/app/app_log.15
2)在 Linux 中删除早于 “X” 天的文件的 Bash 脚本
我们有一个名为 /var/log/apache/
的文件夹,其中包含15天的日志,我们将删除 10 天前的文件。
以下文章与该主题相关,因此你可能有兴趣阅读。
# ls -lh/var/log/apache/ -rw-rw-rw- 3root root24K Oct 1 23:52 2daygeek_access.01 -rw-rw-rw- 3root root24K Oct 2 23:52 2daygeek_access.02 -rw-rw-rw- 3root root24K Oct 3 23:52 2daygeek_access.03 -rw-rw-rw- 3root root24K Oct 4 23:52 2daygeek_access.04 -rw-rw-rw- 3root root24K Oct 5 23:52 2daygeek_access.05 -rw-rw-rw- 3root root24K Oct 6 23:54 2daygeek_access.06 -rw-rw-rw- 3root root24K Oct 7 23:53 2daygeek_access.07 -rw-rw-rw- 3root root24K Oct 8 23:51 2daygeek_access.08 -rw-rw-rw- 3root root24K Oct 9 23:52 2daygeek_access.09 -rw-rw-rw- 3root root24K Oct 10 23:52 2daygeek_access.10 -rw-rw-rw- 3root root24K Oct 11 23:52 2daygeek_access.11 -rw-rw-rw- 3root root24K Oct 12 23:52 2daygeek_access.12 -rw-rw-rw- 3root root24K Oct 13 23:52 2daygeek_access.13 -rw-rw-rw- 3root root24K Oct 14 23:52 2daygeek_access.14 -rw-rw-rw- 3root root24K Oct 15 23:52 2daygeek_access.15
该脚本将删除 10 天前的文件并通过邮件发送文件夹列表。
你可以根据需要修改 -mtime X
的值。另外,请替换你的电子邮箱,而不是用我们的。
# /opt/script/delete-old-files.sh #!/bin/bash prev_count=0 fpath=/var/log/apache/2daygeek_access.* find$fpath-type f-mtime+15 -exec ls -ltrd{}\;> /tmp/file.out find$fpath-type f-mtime+15 -exec rm -rf{}\; count=$(cat /tmp/file.out| wc -l) if [ "$prev_count" -lt"$count" ] ; then MESSAGE="/tmp/file1.out" TO="[email protected]" echo "Apache Access log files are deleted older than 20 days" >>$MESSAGE echo "+--------------------------------------------- +" >>$MESSAGE echo "" >>$MESSAGE cat /tmp/file.out|awk'{print $6,$7,$9}' >>$MESSAGE echo "" >>$MESSAGE SUBJECT="WARNING: Apache log folders are deleted older than 15 days $(date)" mail-s"$SUBJECT" "$TO" <$MESSAGE rm$MESSAGE/tmp/file.out fi
给 delete-old-files.sh
设置可执行权限。
# chmod +x/opt/script/delete-old-files.sh
最后添加一个 cronjob 自动化此任务。它于每天早上 7 点运行。
#crontab-e 0 7 * * * /bin/bash /opt/script/delete-old-folders.sh
你将看到类似下面的输出。
Apache Access log files are deleted older than 20 days +--------------------------------------------------------+ Oct 11 /var/log/apache/2daygeek_access.11 Oct 12 /var/log/apache/2daygeek_access.12 Oct 13 /var/log/apache/2daygeek_access.13 Oct 14 /var/log/apache/2daygeek_access.14 Oct 15 /var/log/apache/2daygeek_access.15
Recommend
-
6
基础:在 Linux 终端中删除文件和文件夹 | Linux 中国本教程讲述了如何在 Linux 终端中安全地删除文件和文件夹。来源:http...
-
2
删除目录重复文件python脚本 #!/usr/bin/python # -*-coding:utf-8 -*- # 本目录下内容相同的文件仅保留首个批量处理脚本,注意不理会文件名,比如a.jpg与b.jpg,就只会保留a.jpg # 注意,不处理子级目录 import os import sys...
-
7
原生php递归删除文件+文件夹 | Lenix Blog 原生php递归删除文件+文件夹 <?phpfunction deldir($dirname){ if(file_exists($dirname)) {//判断是否存在文件夹
-
3
在 Linux 中隐藏文件和文件夹的那些事-51CTO.COM 在 Linux 中隐藏文件和文件夹的那些事 作者:Abhishek Prakash 2022-07-08 15:09:26 这篇面向初学者的文章探讨了在 Linux 中如何在...
-
7
你是否正在寻找一种将文件从 Windows 计算机快速传输到 Linux 计算机并再次传输回来的方法?开源的 PSCP 程序...
-
8
cp Linux cp命令复制文件与文件夹 在Linux/Unix工作,复制文件和目录是您每天最常见任务之一 ...
-
4
find Linux 删除目录文件夹 如果您在没有GUI服务器工作,或者想一次删除多个文件目录,最好的选择是从命令行中删除目录/文件夹 ...
-
11
使用 WinSCP 将文件和文件夹从 Windows 传输到 Linux 作者:Paul 2022-11-28 11:37:55 如果你正在寻找一种快速的从你的 Windows 计算机传输文件到你的 Linux 计算机的方法,那么开源的 WinSCP 实用程序会使其很容...
-
3
【踩坑】文件夹正在使用无法删除 2023-03-04 ...
-
6
Linux 安全(永久)删除文件和文件夹发表于2023-06-01|更新于2023-06-01|technology
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK