你好 我将我的日志文件保存在/opt/project/logs/下,我想每天通过压缩将它们复制到/opt/bkp。
为此我写了这个并且效果很好:
#!/bin/bash
getdate(){
date --date="$1 days ago" "+%Y_%m_%d"
}
rm -rf "/opt/bkp/logs/myapp_log_"$(getdate 365).gz ;
/bin/cat /opt/project/logs/myapp.log | gzip > /opt/bkp/logs/myapp_log_`date +%Y_%m_%d`.gz ;
echo "" > /opt/project/logs/myapp.log ;
但是它不是功能性的或一般性的,我将有几个应用程序用它们的名字保存文件,即 app1.log app2.log
在同一个 /opt/project/logs/
文件夹。我怎样才能将其作为一个“函数”,其中脚本读取 /opt/project/logs/
目录下的每个文件并备份每个文件以 .log
扩展名结尾?
最佳答案
您可以使用发行版附带的 logrotate(8)
工具。 :) 联机帮助页有一个看起来接近您需要的示例:
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP `cat /var/run/inn.pid`
endscript
nocompress
}
好吧,不是 monthly
位,也不是重新启动 inn
:) 但我希望你明白你可以轻松地将新配置文件添加到 /etc/logrotate.d/
不用再担心了。 :)
关于linux - 改进我的备份 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804480/