日志备份 某个网站利用Nginx进行流量转发。Nginx每天会自动创建当天的日志文件,日志文件的命名为:yyyymmdd.log (如:20190525.log)。日志文件被放置在/var/log/nginx目录下。 系统需要定期对日志文件进行整理,采用的规则如下: (1)每个月的第一天凌晨1点30分,执行backup用户主目录下的backuplog.sh脚本(脚本已存在)来备份上一个月的日志文件,大约生成3~5个以.bk为后缀的备份文件,文件保存在/var/tmp目录下。 (2)整个备份的工作大约持续一个小时(肯定少于一个小时),备份结束后,需要把生成的备份文件打包成backup.tar.gz文件,保存在/var/tmp目录下。 (3)打包结束后,删除所有以.bk为后缀的备份文件。 (4)当天凌晨6点,把backup.tar.gz这个压缩文件移动到/var/log/backup目录下。 (5)然后把backup.tar.gz的权限修改为只有文件拥有者具有只读权限,其他用户没有任何权限。 请把上面的每一条规则写成一条crontab指令,不需要编写脚本内容。
时间: 2024-02-17 13:02:15 浏览: 139
(1)每个月的第一天凌晨1点30分,执行backup用户主目录下的backuplog.sh脚本(脚本已存在)来备份上一个月的日志文件,大约生成3~5个以.bk为后缀的备份文件,文件保存在/var/tmp目录下。
```
30 1 1 * * /home/backup/backuplog.sh
```
(2)整个备份的工作大约持续一个小时(肯定少于一个小时),备份结束后,需要把生成的备份文件打包成backup.tar.gz文件,保存在/var/tmp目录下。
```
0 * * * * sleep 30m && tar -czf /var/tmp/backup.tar.gz /var/tmp/*.bk
```
(3)打包结束后,删除所有以.bk为后缀的备份文件。
```
5 * * * * rm -f /var/tmp/*.bk
```
(4)当天凌晨6点,把backup.tar.gz这个压缩文件移动到/var/log/backup目录下。
```
0 6 * * * mv /var/tmp/backup.tar.gz /var/log/backup/
```
(5)然后把backup.tar.gz的权限修改为只有文件拥有者具有只读权限,其他用户没有任何权限。
```
0 6 * * * chmod 400 /var/log/backup/backup.tar.gz
```
相关问题
nginx自定义$time_local格式为yyyyMMdd HHmmss
可以使用 Nginx 的内置变量 $msec 和 $time_iso8601,然后通过自定义格式化字符串实现。
下面是一个示例配置:
```nginx
log_format mylog '$remote_addr - $remote_user [$time_custom] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
map $time_iso8601 $time_custom {
default '';
'~(\d{4})-(\d{2})-(\d{2})' '$1$2$3';
'~(\d{2}):(\d{2}):(\d{2})' ' $1$2$3';
}
```
在这个配置中,我们定义了一个名为 mylog 的日志格式,其中 $time_custom 是我们自定义的时间格式变量,通过对 $time_iso8601 变量进行替换,实现了自定义格式的时间输出。在 map 块中,我们对 $time_iso8601 进行了两次正则表达式匹配,然后通过替换字符串的方式生成了 $time_custom。
使用这个自定义日志格式,可以将日志输出到指定的文件或者标准输出中:
```nginx
access_log /var/log/nginx/access.log mylog;
```
这样就可以按照我们自定义的时间格式 "yyyyMMdd HHmmss" 记录 Nginx 日志了。
nginx 日志分割的脚本
A:以下是一个nginx日志分割的脚本示例:
```
#!/bin/bash
#定义日志路径
log_path="/usr/local/nginx/logs/access.log"
#定义日志备份路径
backup_path="/usr/local/nginx/logs/backup/"
#获取当前日期
now_date=`date +%Y%m%d`
#判断备份目录是否存在,不存在则创建
if [ ! -d "$backup_path" ]; then
mkdir -p "$backup_path"
fi
#将访问日志文件拷贝到备份目录下,并重新命名为access_YYYYMMDD.log
cp "$log_path" "$backup_path/access_${now_date}.log"
#清空访问日志文件,使其重新生成
echo "" > "$log_path"
#向nginx发送USR1信号,通知其重新打开日志文件
pid=`cat /usr/local/nginx/logs/nginx.pid`
kill -USR1 $pid
echo "nginx日志分割成功"
```
脚本的功能是将nginx的访问日志分割成每天一个文件,并将分割后的文件备份至指定目录。脚本首先获取当前日期,然后将访问日志文件拷贝到备份目录,以access_YYYYMMDD.log的方式命名。然后,清空访问日志文件,使其重新生成,最后向nginx发送USR1信号,通知其重新打开日志文件。
阅读全文