129 lines
3.1 KiB
Bash
129 lines
3.1 KiB
Bash
#!/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"
|