Skip to content

Commit ed578e8

Browse files
committed
fix: 修复初始化脚本更改了已经生成的文件权限
1 parent a1f41fd commit ed578e8

2 files changed

Lines changed: 238 additions & 137 deletions

File tree

dpe.sh

Lines changed: 238 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
#!/usr/bin/env bash
2+
3+
set -eu
4+
5+
# 脚本所在目录
6+
CWD=$(dirname $(readlink -f "$0"))
7+
# 相关目录
8+
DIR_DATA=${CWD}/data
9+
DIR_LOGS=${CWD}/logs
10+
DIR_SERVICES=${CWD}/services
11+
# 数据子目录
12+
DATA_DIRS=(
13+
composer
14+
elasticsearch
15+
mongodb
16+
mysql5
17+
mysql8
18+
rabbitmq
19+
redis
20+
)
21+
# 日志子目录
22+
LOGS_DIRS=(
23+
mongodb
24+
mysql/5
25+
mysql/8
26+
nginx
27+
php/73/log
28+
php/73/supervisor
29+
php/74/log
30+
php/74/supervisor
31+
php/80/log
32+
php/80/supervisor
33+
php/81/log
34+
php/81/supervisor
35+
rabbitmq
36+
)
37+
# 服务子目录
38+
LOGS_DIRS=(
39+
elasticsearch
40+
mongodb
41+
mysql
42+
nginx
43+
php/73/log
44+
php/73/supervisor
45+
php/74/log
46+
php/74/supervisor
47+
php/80/log
48+
php/80/supervisor
49+
php/81/log
50+
php/81/supervisor
51+
rabbitmq
52+
)
53+
54+
# 输出
55+
message() {
56+
if [[ $# -lt 1 ]]; then
57+
return
58+
fi
59+
60+
echo -e "# $1"
61+
}
62+
63+
# 初始化 docker-compose.yml 和 .env 文件
64+
init_startup_files() {
65+
local compose_file_example=$CWD/docker-compose.yml.example
66+
local compose_file=$CWD/docker-compose.yml
67+
local env_file_example=$CWD/.env.example
68+
local env_file=$CWD/.env
69+
70+
message "正在初始化 docker-compose.yml"
71+
if [[ -f $compose_file ]]; then
72+
message "${compose_file} 文件已存在"
73+
else
74+
cp $compose_file_example $compose_file
75+
message "${compose_file} 初始化成功"
76+
fi
77+
78+
message "正在初始化 .env"
79+
if [[ -f $env_file ]]; then
80+
message "${env_file} 文件已存在"
81+
else
82+
cp $env_file_example $env_file
83+
message "${env_file} 初始化成功"
84+
fi
85+
}
86+
87+
# 初始化 DIR_DATA
88+
init_data() {
89+
for d in ${DATA_DIRS[@]}
90+
do
91+
local item=$DIR_DATA/$d
92+
if [[ -d $item ]]; then
93+
message "处理目录 chmod 777 ${item}"
94+
chmod 777 $item
95+
fi
96+
done
97+
}
98+
99+
# 初始化 DIR_LOGS
100+
init_logs() {
101+
for d in ${LOGS_DIRS[@]}
102+
do
103+
local item=$DIR_LOGS/$d
104+
if [[ -d $item ]]; then
105+
message "处理目录 chmod 777 ${item}"
106+
chmod 777 $item
107+
fi
108+
done
109+
}
110+
111+
# 初始化 DIR_SERVICES
112+
init_services() {
113+
if [[ $# -lt 1 ]]; then
114+
local p=$DIR_SERVICES
115+
else
116+
local p=$1
117+
fi
118+
119+
if [[ ! -d $p ]]; then
120+
message "${p} 不是有效的目录"
121+
return
122+
fi
123+
124+
message "遍历目录 ${p}"
125+
for file in `ls -A ${p}`
126+
do
127+
local item=$p/$file
128+
if [[ -d $item ]]; then
129+
message "处理目录 chmod 777 ${item}"
130+
chmod 777 $item
131+
init_services $item
132+
elif [[ -f $item ]]; then
133+
message "处理文件 chmod 644 ${item}"
134+
chmod 644 $item
135+
fi
136+
done
137+
}
138+
139+
# 清空数据
140+
clean_data() {
141+
for d in ${DATA_DIRS[@]}
142+
do
143+
local item=$DIR_DATA/$d
144+
local item_ignore=$item/.gitignore
145+
if [[ -d $item && -f $item_ignore ]]; then
146+
message "正在遍历 ${item}"
147+
for file in `ls -A ${item}`
148+
do
149+
if [[ ".gitignore" != "$file" ]]; then
150+
message "正在删除 rm -rf ${item}/${file}"
151+
rm -rf "${item}/${file}"
152+
fi
153+
done
154+
fi
155+
done
156+
}
157+
158+
# 清空数据
159+
clean_logs() {
160+
for d in ${LOGS_DIRS[@]}
161+
do
162+
local item=$DIR_LOGS/$d
163+
local item_ignore=$item/.gitignore
164+
if [[ -d $item && -f $item_ignore ]]; then
165+
message "正在遍历 ${item}"
166+
for file in `ls -A ${item}`
167+
do
168+
if [[ ".gitignore" != "$file" ]]; then
169+
message "正在删除 rm -rf ${item}/${file}"
170+
rm -rf "${item}/${file}"
171+
fi
172+
done
173+
fi
174+
done
175+
}
176+
177+
init() {
178+
message "---------------------------------------------"
179+
message "正在初始化文件"
180+
message "---------------------------------------------"
181+
init_startup_files
182+
183+
message "---------------------------------------------"
184+
message "正在初始化 ${DIR_DATA}"
185+
message "---------------------------------------------"
186+
init_data
187+
188+
message "---------------------------------------------"
189+
message "正在初始化 ${DIR_LOGS}"
190+
message "---------------------------------------------"
191+
init_logs
192+
193+
message "---------------------------------------------"
194+
message "正在初始化 ${DIR_SERVICES}"
195+
message "---------------------------------------------"
196+
init_services
197+
198+
message "---------------------------------------------"
199+
message "初始化完成"
200+
message "---------------------------------------------"
201+
}
202+
203+
clean() {
204+
message "---------------------------------------------"
205+
message "正在清空 ${DIR_DATA}"
206+
message "---------------------------------------------"
207+
clean_data
208+
209+
message "---------------------------------------------"
210+
message "正在清空 ${DIR_LOGS}"
211+
message "---------------------------------------------"
212+
clean_logs
213+
}
214+
215+
usage() {
216+
cat << HELP
217+
Usage: dpe.sh <init|clean>
218+
219+
# dpe.sh init 初始化目录和配置文件权限
220+
# dpe.sh clean 删除现有的数据和日志文件
221+
HELP
222+
}
223+
224+
if [[ $# -ge 1 ]]; then
225+
case $1 in
226+
"init")
227+
init
228+
;;
229+
"clean")
230+
clean
231+
;;
232+
*)
233+
message "无效参数 ${1}"
234+
;;
235+
esac
236+
else
237+
usage
238+
fi

init.sh

Lines changed: 0 additions & 137 deletions
This file was deleted.

0 commit comments

Comments
 (0)