CatPtain commited on
Commit
eacf2a2
·
verified ·
1 Parent(s): d1ab95a

Delete monitor-cleanup.sh

Browse files
Files changed (1) hide show
  1. monitor-cleanup.sh +0 -199
monitor-cleanup.sh DELETED
@@ -1,199 +0,0 @@
1
- #!/bin/bash
2
-
3
- # WordPress文件自动清理脚本
4
- # 删除超过1年的文件,保持系统整洁
5
- # 适配Hugging Face Spaces环境
6
-
7
- # 配置变量
8
- WORDPRESS_ROOT="/var/www/html"
9
- LOG_FILE="/var/log/wordpress/cleanup.log"
10
- RETENTION_DAYS=365 # 保留天数(1年)
11
- DRY_RUN=false # 设置为true进行测试运行
12
-
13
- # 创建日志目录
14
- mkdir -p "$(dirname "$LOG_FILE")"
15
-
16
- # 日志函数
17
- log_message() {
18
- echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
19
- }
20
-
21
- # 获取文件大小(人类可读格式)
22
- get_size() {
23
- du -sh "$1" 2>/dev/null | cut -f1
24
- }
25
-
26
- # 开始清理
27
- log_message "=== 开始自动清理任务 ==="
28
- log_message "保留期限: ${RETENTION_DAYS} 天"
29
- log_message "WordPress根目录: ${WORDPRESS_ROOT}"
30
-
31
- # 检查WordPress目录是否存在
32
- if [ ! -d "$WORDPRESS_ROOT" ]; then
33
- log_message "错误: WordPress目录不存在: $WORDPRESS_ROOT"
34
- exit 1
35
- fi
36
-
37
- # 统计变量
38
- total_files_checked=0
39
- total_files_deleted=0
40
- total_size_freed=0
41
-
42
- # 需要清理的目录列表
43
- cleanup_dirs=(
44
- "$WORDPRESS_ROOT/wp-content/uploads"
45
- "$WORDPRESS_ROOT/wp-content/cache"
46
- "$WORDPRESS_ROOT/wp-content/backup"
47
- "$WORDPRESS_ROOT/wp-content/temp"
48
- "/tmp"
49
- "/var/log/wordpress"
50
- )
51
-
52
- # 排除的文件和目录模式
53
- exclude_patterns=(
54
- "*.db" # 数据库文件
55
- "*.sql" # SQL备份文件
56
- "wp-config.php" # 配置文件
57
- "index.php" # 索引文件
58
- ".htaccess" # Apache配置
59
- "*.log" # 当前日志文件(单独处理)
60
- )
61
-
62
- # 检查文件是否应该被排除
63
- should_exclude() {
64
- local file="$1"
65
- local basename=$(basename "$file")
66
-
67
- for pattern in "${exclude_patterns[@]}"; do
68
- if [[ "$basename" == $pattern ]]; then
69
- return 0 # 应该排除
70
- fi
71
- done
72
- return 1 # 不排除
73
- }
74
-
75
- # 清理指定目录
76
- cleanup_directory() {
77
- local dir="$1"
78
-
79
- if [ ! -d "$dir" ]; then
80
- log_message "跳过不存在的目录: $dir"
81
- return
82
- fi
83
-
84
- log_message "清理目录: $dir"
85
-
86
- # 查找超过保留期限的文件
87
- while IFS= read -r -d '' file; do
88
- total_files_checked=$((total_files_checked + 1))
89
-
90
- # 检查是否应该排除
91
- if should_exclude "$file"; then
92
- continue
93
- fi
94
-
95
- # 获取文件大小
96
- file_size=$(get_size "$file")
97
-
98
- if [ "$DRY_RUN" = true ]; then
99
- log_message "[测试模式] 将删除: $file (大小: $file_size)"
100
- else
101
- log_message "删除文件: $file (大小: $file_size)"
102
- if rm -f "$file" 2>/dev/null; then
103
- total_files_deleted=$((total_files_deleted + 1))
104
- else
105
- log_message "警告: 无法删除文件: $file"
106
- fi
107
- fi
108
- done < <(find "$dir" -type f -mtime +$RETENTION_DAYS -print0 2>/dev/null)
109
-
110
- # 删除空目录
111
- if [ "$DRY_RUN" = false ]; then
112
- find "$dir" -type d -empty -delete 2>/dev/null
113
- fi
114
- }
115
-
116
- # 清理日志文件(保留最近的日志)
117
- cleanup_logs() {
118
- log_message "清理旧日志文件..."
119
-
120
- # 保留最近30天的日志,删除更老的
121
- find "/var/log" -name "*.log" -type f -mtime +30 -exec rm -f {} \; 2>/dev/null
122
-
123
- # 压缩大于10MB的当前日志文件
124
- find "/var/log" -name "*.log" -type f -size +10M -exec gzip {} \; 2>/dev/null
125
- }
126
-
127
- # 清理临时文件
128
- cleanup_temp_files() {
129
- log_message "清理临时文件..."
130
-
131
- # 清理PHP临时文件
132
- find /tmp -name "php*" -type f -mtime +1 -delete 2>/dev/null
133
-
134
- # 清理WordPress临时文件
135
- find "$WORDPRESS_ROOT" -name "*.tmp" -type f -mtime +1 -delete 2>/dev/null
136
- find "$WORDPRESS_ROOT" -name "*.temp" -type f -mtime +1 -delete 2>/dev/null
137
- }
138
-
139
- # 清理WordPress缓存
140
- cleanup_wordpress_cache() {
141
- log_message "清理WordPress缓存..."
142
-
143
- # 清理对象缓存
144
- if [ -d "$WORDPRESS_ROOT/wp-content/cache" ]; then
145
- find "$WORDPRESS_ROOT/wp-content/cache" -type f -mtime +7 -delete 2>/dev/null
146
- fi
147
-
148
- # 清理页面缓存
149
- if [ -d "$WORDPRESS_ROOT/wp-content/page-cache" ]; then
150
- find "$WORDPRESS_ROOT/wp-content/page-cache" -type f -mtime +7 -delete 2>/dev/null
151
- fi
152
- }
153
-
154
- # 执行清理任务
155
- for dir in "${cleanup_dirs[@]}"; do
156
- cleanup_directory "$dir"
157
- done
158
-
159
- # 执行特殊清理任务
160
- cleanup_logs
161
- cleanup_temp_files
162
- cleanup_wordpress_cache
163
-
164
- # 获取磁盘使用情况
165
- disk_usage=$(df -h "$WORDPRESS_ROOT" | awk 'NR==2 {print $5}' | sed 's/%//')
166
-
167
- # 记录清理结果
168
- log_message "=== 清理任务完成 ==="
169
- log_message "检查文件数: $total_files_checked"
170
- log_message "删除文件数: $total_files_deleted"
171
- log_message "当前磁盘使用率: ${disk_usage}%"
172
-
173
- # 如果磁盘使用率过高,发出警告
174
- if [ "$disk_usage" -gt 80 ]; then
175
- log_message "警告: 磁盘使用率过高 (${disk_usage}%),建议检查大文件"
176
-
177
- # 列出最大的10个文件
178
- log_message "最大的10个文件:"
179
- find "$WORDPRESS_ROOT" -type f -exec du -h {} + 2>/dev/null | sort -rh | head -10 | while read size file; do
180
- log_message " $size - $file"
181
- done
182
- fi
183
-
184
- # 清理完成后的系统信息
185
- log_message "系统信息:"
186
- log_message " 内存使用: $(free -h | awk 'NR==2{printf "%.1f%%", $3*100/$2 }')"
187
- log_message " 磁盘使用: ${disk_usage}%"
188
- log_message " 负载平均: $(uptime | awk -F'load average:' '{print $2}')"
189
-
190
- log_message "=== 清理任务结束 ==="
191
- echo ""
192
-
193
- # 如果是测试模式,提醒用户
194
- if [ "$DRY_RUN" = true ]; then
195
- log_message "注意: 这是测试运行,没有实际删除文件"
196
- log_message "要执行实际清理,请将脚本中的 DRY_RUN 设置为 false"
197
- fi
198
-
199
- exit 0