shell生成按年月的目录

1 场景

     最近有个小需求,需要从nginx日志里面提取一些有用的数据,并格式化成json格式存储,会一直保存,这样的话每天生成一个文件,几年后都好几千个文件,不便于管理和查找,所以想着按年月分别保存,这样的话一个目录下文件最多也就31个文件。

 

2 脚本

[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# tree /nas
/nas
└── json_logs
    └── 2020
        └── 10
            ├── json-log_2020-10-26_16:07:54
            ├── json-log_2020-10-26_16:07:55
            ├── json-log_2020-10-26_16:07:56
            └── json-log_2020-10-26_16:07:57

3 directories, 4 files
[root@izwz9f1slw8pe82ztnynn1z ~]# cat test_date.sh 
#!/usr/bin/env bash

year=$(date +%Y)

month=$(date +%m)

ymd=$(date +%Y-%m-%d)

hms=$(date +%T)


base="/nas/json_logs"
ym=${year}/${month}
json_logs="${base}/${year}/${month}"

#test_file=json-log_${ymd}
test_file=json-log_${ymd}_${hms}

# mkdir
[ ! -d $json_logs ] && { mkdir -p $json_logs; }

echo '{"remote_ip":"1.1.1.1"}' > ${json_logs}/${test_file}
[root@izwz9f1slw8pe82ztnynn1z ~]# tree -d /nas
/nas
└── json_logs
    └── 2020
        └── 10

3 directories
[root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas
json_logs
[root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/
json_logs
[root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/json_logs/
2020
[root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/json_logs/2020/
10
[root@izwz9f1slw8pe82ztnynn1z ~]# ls /nas/json_logs/2020/10/
json-log_2020-10-26_16:07:54  json-log_2020-10-26_16:07:55  json-log_2020-10-26_16:07:56  json-log_2020-10-26_16:07:57
[root@izwz9f1slw8pe82ztnynn1z ~]# 

  

3 手动修改个人测试服务器的时间测试

[root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201209'
Wed Dec  9 00:00:00 CST 2020
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201210'
Thu Dec 10 00:00:00 CST 2020
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201211'
Fri Dec 11 00:00:00 CST 2020
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201212'
Sat Dec 12 00:00:00 CST 2020
[root@izwz9f1slw8pe82ztnynn1z ~]# sh test_date.sh 
[root@izwz9f1slw8pe82ztnynn1z ~]# date -s '20201211'
Fri Dec 11 00:00:00 CST 2020
[root@izwz9f1slw8pe82ztnynn1z ~]# tree /nas
/nas
└── json_logs
    └── 2020
        ├── 10
        │   ├── json-log_2020-10-26_16:07:54
        │   ├── json-log_2020-10-26_16:07:55
        │   ├── json-log_2020-10-26_16:07:56
        │   ├── json-log_2020-10-26_16:07:57
        │   ├── json-log_2020-10-27_00:00:06
        │   ├── json-log_2020-10-27_00:00:28
        │   └── json-log_2020-10-29_00:00:05
        ├── 11
        │   ├── json-log_2020-11-01_00:00:03
        │   ├── json-log_2020-11-01_00:00:23
        │   ├── json-log_2020-11-01_00:00:27
        │   ├── json-log_2020-11-02_00:00:02
        │   ├── json-log_2020-11-02_00:00:03
        │   ├── json-log_2020-11-02_00:00:06
        │   └── json-log_2020-11-03
        └── 12
            ├── json-log_2020-12-08
            ├── json-log_2020-12-09
            ├── json-log_2020-12-10
            ├── json-log_2020-12-11
            └── json-log_2020-12-12

5 directories, 19 files
[root@izwz9f1slw8pe82ztnynn1z ~]# cat test_date.sh 
#!/usr/bin/env bash

year=$(date +%Y)

month=$(date +%m)

ymd=$(date +%Y-%m-%d)

hms=$(date +%T)


base="/nas/json_logs"
ym=${year}/${month}
json_logs="${base}/${year}/${month}"

test_file=json-log_${ymd}
#test_file=json-log_${ymd}_${hms}

# mkdir
[ ! -d $json_logs ] && { mkdir -p $json_logs; }

echo '{"remote_ip":"1.1.1.1"}' > ${json_logs}/${test_file}
[root@izwz9f1slw8pe82ztnynn1z ~]# 

  

posted @ 2020-10-26 16:18  某某7  阅读(467)  评论(0编辑  收藏  举报