初始化

This commit is contained in:
2026-07-18 16:13:52 +08:00
parent c0070f0a5c
commit fe8b417ab6
75 changed files with 12898 additions and 1 deletions
+70
View File
@@ -0,0 +1,70 @@
#!/bin/bash
# =============================================
# 海外服务器:打包压缩当日 data/raw/ 下的所有文件
# =============================================
# 用法:./scripts/overseas_pack.sh [日期]
# 不传日期则使用当前新闻日(基于 day_cutoff_hour
# =============================================
set -euo pipefail
# 从 system.yaml 读取配置(有默认值兜底)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/_load_config.sh"
PROJECT_DIR="${CRAWL_PROJECT_DIR}"
DATA_DIR="$PROJECT_DIR/data/raw"
PACK_TMP="${SYNC_PACK_DIR:-/tmp}"
SENTINEL_FILE="${SYNC_SENTINEL}"
# ── 确定新闻日 ──────────────────────────────────────
if [ $# -ge 1 ]; then
NEWS_DAY="$1"
else
# 从 system.yaml 读取 cutoff hour
CUTOFF=$(python3 -c "
import yaml
with open('$PROJECT_DIR/configs/system.yaml') as f:
cfg = yaml.safe_load(f)
print(cfg.get('schedule', {}).get('day_cutoff_hour', 6))
" 2>/dev/null || echo 6)
HOUR=$(date +%H)
if [ "$HOUR" -lt "$CUTOFF" ]; then
NEWS_DAY=$(date -d "yesterday" +%Y%m%d)
else
NEWS_DAY=$(date +%Y%m%d)
fi
fi
echo "[$(date)] 新闻日: $NEWS_DAY"
# ── 检查数据是否存在 ─────────────────────────────────
if [ ! -d "$DATA_DIR" ]; then
echo "[$(date)] WARNING: data/raw/ 不存在,跳过打包"
exit 0
fi
# 计算今天目录下的总文件数(排除 tar.gz 和 sentinel
TOTAL_FILES=$(find "$DATA_DIR" -path "*/$NEWS_DAY/*" -type f ! -name "*.tar.gz" 2>/dev/null | wc -l)
if [ "$TOTAL_FILES" -eq 0 ]; then
echo "[$(date)] WARNING: 新闻日 $NEWS_DAY 无数据文件,跳过打包"
exit 0
fi
# ── 打包压缩 ─────────────────────────────────────────
PACK_FILE="$PACK_TMP/en_news_${NEWS_DAY}.tar.gz"
echo "[$(date)] 打包 $TOTAL_FILES 个文件 → $PACK_FILE ..."
# 收集当天的所有数据文件(包括任意源下面的日期目录)
find "$DATA_DIR" -path "*/$NEWS_DAY/*" -type f ! -name "*.tar.gz" 2>/dev/null \
| tar czf "$PACK_FILE" -T - --transform='s|.*/data/raw/||' 2>/dev/null
PACK_SIZE=$(du -h "$PACK_FILE" | cut -f1)
echo "[$(date)] 打包完成: $PACK_FILE ($PACK_SIZE)"
# ── 生成哨兵文件 ─────────────────────────────────────
echo "$NEWS_DAY $(date -Iseconds) $PACK_SIZE ($TOTAL_FILES files)" > "$SENTINEL_FILE"
echo "[$(date)] 哨兵文件已更新: $SENTINEL_FILE"
echo "[$(date)] ✅ 海外打包完成"