Bash 查找早于X天、gzip的文件,创建MD5并删除原始文件

Bash 查找早于X天、gzip的文件,创建MD5并删除原始文件,bash,gzip,md5,Bash,Gzip,Md5,我正在编写一个小脚本,以帮助我管理基于此的大量日志文件 我已添加了所需的其他要求: -查找.log文件>2天(这更多是为了安全起见) -创建日志文件的MD5哈希值 -删除原始日志文件 !/bin/bash # 1) Find .log files > 2 days # 2) Determine filename # 3) gzip filename # 4) Create gzip MD5 # 5) Remove original file function compress_file

我正在编写一个小脚本,以帮助我管理基于此的大量日志文件

我已添加了所需的其他要求:

-查找.log文件>2天(这更多是为了安全起见)
-创建日志文件的MD5哈希值
-删除原始日志文件

!/bin/bash
# 1) Find .log files > 2 days
# 2) Determine filename
# 3) gzip filename
# 4) Create gzip MD5
# 5) Remove original file 

function compress_file {
  BASENAME=`/bin/basename "$1"`;
  /bin/gzip -c "$1" > /var/logs/$BASENAME.gz;
  /usr/bin/md5sum  /var/logs/$BASENAME.gz >  /var/logs/$BASENAME.gz.md5
  /bin/rm /var/logs/$BASENAME
}

export -f compress_file;
/bin/find /var/logs -iname "*.log" -mtime +2 -exec /bin/bash -c 'compress_file "$0"' {} \;
export -fn compress_file;
由于这是一个关键操作,我想将一些输出编码到日志文件(甚至发送到syslog),以便进行审计和故障排除

更新:除了日志记录到记录器之外,如果存在按年/月/日存储的日志文件,我如何处理日志文件,因为$BASENAME只处理文件名,不考虑动态目录

/var/log//2015/08/10/data1.log
/var/log//2015/08/10/data2.log
/var/log//2015/08/10/data3.log
/var/log//2015/08/11/data1.log
/var/log//2015/08/11/data2.log
/var/log//2015/08/11/data3.log

您可以使用logger命令将消息写入syslog。只需在任何操作之前写入日志消息。比如:

Logger "Remove $BASENAME"
/bin/rm /var/logs/$BASENAME

您还可以验证关键命令的结果。执行任何命令后,只需检查“$?”变量。它包含执行结果。

您可以使用logger命令将消息写入syslog。只需在任何操作之前写入日志消息。比如:

Logger "Remove $BASENAME"
/bin/rm /var/logs/$BASENAME

您还可以验证关键命令的结果。执行任何命令后,只需检查“$?”变量。它包含执行结果。

您可以尝试获取空文件夹列表并将其删除。比如:find/-typed-emptyI我想上面的解决方案对静态目录路径很好,如果使用动态目录路径(包括YYYY/MM/DDD),则需要另一种方法。您可以尝试获取空文件夹列表并删除它们。比如:find/-typed-emptyI我猜上面的解决方案对于静态目录路径是合适的,如果使用动态目录路径(包括YYYY/MM/DDD),则需要不同的方法。