init commit
This commit is contained in:
128
scripts/compress_logs.sh
Normal file
128
scripts/compress_logs.sh
Normal file
@@ -0,0 +1,128 @@
|
||||
#!/bin/bash
|
||||
# 快速执行日志压缩的便捷脚本
|
||||
|
||||
# 获取脚本所在目录
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||
|
||||
# 必填参数 - 没有默认值
|
||||
YEAR=""
|
||||
MONTH=""
|
||||
START_DAY=""
|
||||
END_DAY=""
|
||||
INVENTORY="$PROJECT_ROOT/inventory/hosts.yaml"
|
||||
PLAYBOOK="$PROJECT_ROOT/playbooks/compress_logs.yaml"
|
||||
|
||||
# 显示帮助信息
|
||||
show_help() {
|
||||
cat << EOF
|
||||
用法: $0 -y YEAR -m MONTH -s START_DAY -e END_DAY [其他选项]
|
||||
|
||||
必填选项:
|
||||
-y, --year YEAR 年份 (必填)
|
||||
-m, --month MONTH 月份 (必填)
|
||||
-s, --start-day DAY 起始日期 (必填)
|
||||
-e, --end-day DAY 结束日期 (必填)
|
||||
|
||||
可选选项:
|
||||
-h, --host HOST 指定单个主机
|
||||
--no-rm-origin 不删除原文件夹
|
||||
--no-download 不下载到本地
|
||||
--no-rm-archive 不删除远程压缩包
|
||||
--help 显示此帮助信息
|
||||
|
||||
示例:
|
||||
# 压缩2025年11月21-30日的日志
|
||||
$0 -y 2025 -m 11 -s 21 -e 30
|
||||
|
||||
# 压缩2025年12月的所有日志
|
||||
$0 -y 2025 -m 12 -s 1 -e 31
|
||||
|
||||
# 只处理jhlog服务器
|
||||
$0 -y 2025 -m 11 -s 21 -e 30 -h jhlog
|
||||
|
||||
# 只压缩不删除原文件
|
||||
$0 -y 2025 -m 11 -s 21 -e 30 --no-rm-origin
|
||||
|
||||
注意:
|
||||
- 年月日参数必须显式指定
|
||||
- 下载路径: /mnt/d/logs/<host_name>/<year>/<month>/
|
||||
- 支持断点续传
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# 解析命令行参数
|
||||
EXTRA_VARS=""
|
||||
LIMIT=""
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
-y|--year)
|
||||
YEAR="$2"
|
||||
shift 2
|
||||
;;
|
||||
-m|--month)
|
||||
MONTH="$2"
|
||||
shift 2
|
||||
;;
|
||||
-s|--start-day)
|
||||
START_DAY="$2"
|
||||
shift 2
|
||||
;;
|
||||
-e|--end-day)
|
||||
END_DAY="$2"
|
||||
shift 2
|
||||
;;
|
||||
-h|--host)
|
||||
LIMIT="--limit $2"
|
||||
shift 2
|
||||
;;
|
||||
--no-rm-origin)
|
||||
EXTRA_VARS="$EXTRA_VARS remove_after_compress=false"
|
||||
shift
|
||||
;;
|
||||
--no-download)
|
||||
EXTRA_VARS="$EXTRA_VARS download_to_local=false"
|
||||
shift
|
||||
;;
|
||||
--no-rm-archive)
|
||||
EXTRA_VARS="$EXTRA_VARS remove_local_archives=false"
|
||||
shift
|
||||
;;
|
||||
--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "未知选项: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# 验证必填参数
|
||||
if [ -z "$YEAR" ] || [ -z "$MONTH" ] || [ -z "$START_DAY" ] || [ -z "$END_DAY" ]; then
|
||||
echo "错误: 缺少必填参数!"
|
||||
echo ""
|
||||
show_help
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 构建完整的 extra-vars
|
||||
EXTRA_VARS="year=$YEAR month=$MONTH start_day=$START_DAY end_day=$END_DAY $EXTRA_VARS"
|
||||
|
||||
# 显示执行信息
|
||||
echo "=========================================="
|
||||
echo "日志压缩任务"
|
||||
echo "=========================================="
|
||||
echo "年份: $YEAR"
|
||||
echo "月份: $MONTH"
|
||||
echo "日期范围: $START_DAY - $END_DAY"
|
||||
echo "下载路径: /mnt/d/logs/<host_name>/$YEAR/$MONTH/"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
# 执行 ansible-playbook
|
||||
ansible-playbook -i "$INVENTORY" "$PLAYBOOK" $LIMIT -e "$EXTRA_VARS"
|
||||
Reference in New Issue
Block a user