在log目录下有如下文件:
特征很明显:中间有8位连续数字表示年月日
比如现在是2011年5月份,压缩3个月及之前的就是XXXXXXX.201102XX.log的文件
程序思路:
先用date命令加参数得出今天之前三个月的年月,比如今天是2011年5月19号,用下面这句得到201102:
date -d "3 months ago" +%Y%m
然后用ls命令将log目录下的文件名列出来赋给数组,在循环中用正则匹配出文件名中的日期:
.*\([0-9]\{8\}\).*
这条正则的相关文档:
expr正则匹配心得1
对文件名列表数组循环,在循环中检查到匹配的则给文件名左边添加“log/”,不匹配则置为空串,注意是空串不是空;
然后检查最终数组是否有可用元素,如果没有则打印提示信息,有则执行tar命令;
最后删除已使用过的文件
echo "Please wait..."
m=`date -d "3 months ago" +%Y%m`
index=0
f=`ls log -1 -c`
for name in $f
do
n=`expr "$name" : '.*\([0-9]\{8\}\).*'`
if [ "$n" != "" ] && [ "$n" -le "$m"31 ]
then
f[$index]="log/$name"
else
f[$index]=""
fi
(( index ++ ))
done
str=${f[@]}
if [ "${#str}" -gt 0 ]
then
tar -zcvf logbak/$m.tar.gz $str
else
echo "No files found."
exit 0
fi
echo "tar.gz maked, now delete old files."
rm -fr $str
echo "done."
exit 0
分享到:
相关推荐
该脚本用于计算上个月最后一天的日期,格式为`YYYYMMDD`。 1. **获取当前年月**:使用`date +%Y`和`date +%m-1|bc`分别获取当前年份和上一个月的月份。 2. **调整月份和年份**:如果月份小于1,则将月份设为12,并...
输入一个文件名,如果文件名为空则提示输入的文件为空,否则判断文件是否存在,不存在则显示提示信息,如果文件存在则判断文件是普通文件还是目录,或是其他文件,给出相应的判断信息 实验小结: 通过上述实例,...
- `$BACKETC`: 存储了压缩文件的名称,由当前日期(年、月、日)和 "etc" 组成。 2. **特殊字符的解释**: - 引号:双引号内的特殊字符会被解释,而单引号内的不会。 - `$`: 用于引用变量的值。 - `#`: 表示...
例如,每个月的第一天备份并压缩 `/etc` 目录的所有内容,并保存到 `/root/bak` 目录。 ##### 脚本示例 ```bash #!/bin/sh DIRNAME=$(ls /root | grep bak) if [ -z "$DIRNAME" ]; then mkdir /root/bak cd /root...
- 创建压缩包:`tar -cvf [压缩文件名] [待压缩文件/目录]` - 示例:`tar -cvf archive.tar.gz dir1`(创建名为archive.tar.gz的压缩包,其中包含dir1目录的内容)。 - 解压缩:`tar -zxvf [压缩文件名]` - ...
在文件路径和名称的设置上,脚本中也展示了如何动态生成文件路径和文件名,这里通过系统日期和时间来命名文件,如将月、日、小时和分钟组合进文件名,以确保每次备份的文件名具有唯一性。 文档还提到了使用xp_cmd...
[MS-SHLLINK] Shell Link (.LNK) 二进制文件格式是微软公司发布的一项技术规范文档,该文档详细介绍了Windows操作系统中使用的快捷方式文件(.LNK文件)的具体结构与组成。.LNK文件是一种用于创建到其他文件或目录的...
3.13 计算最后一个周五的日期:编写函数计算特定日期之前或之后的某一周的工作日。 3.14 计算当前月份的日期范围:生成本月所有的日期。 3.15 字符串转换为日期:使用dateutil或datetime模块将字符串转换为日期对象...
注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。 bootcfg /scan 扫描用于 Windows 安装的所有磁盘并显示结果。 注意:这些结果被静态存储,并用于本次会话。如果在...
- **cal**:显示日历,`-3`显示前一个月、本月和下个月,`-y`显示整年日历。 - **date**:显示或设置系统时间,`+formatstring`用于定制时间格式输出。 以上知识涵盖了Linux环境下从基本操作到高级管理的多个层面,...
接着,脚本会获取当前的年、月、日,构造一个新的备份文件名,并使用tar命令将/etc目录压缩到该备份文件中。 以上知识点涵盖了Linux中断处理机制、信号处理、文件系统结构、内核线程动态管理以及系统管理命令和脚本...
Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...
这个命令非常实用,例如`touch abc`创建一个名为abc的空文件,`touch -t *** aaa`将名为aaa的文件时间戳修改为2009年5月1日10点。 Linux系统下的文件权限使用`rwx`表示,分别代表读(read)、写(write)、执行...
通常,每隔六个月会有一个新版本发布,而长期支持(LTS)版本每两年发布一次。 - **特点:** Ubuntu以易用性和广泛的社区支持著称。它拥有丰富的软件库,并且对新手友好。此外,Ubuntu还非常注重安全性,定期发布...
5. 网络管理通常包括监测、传输和管理三个部分,管理部分是核心。 6. 系统管理员的职责涉及系统资源管理、性能管理、设备管理、安全管理以及记账管理。 7. Linus Torvalds是Linux的创始人,他是芬兰国籍,1991年10月...