hequ commited on
Commit
7e811cb
·
verified ·
1 Parent(s): 8783c2d

Update tools/hf-backup.sh

Browse files
Files changed (1) hide show
  1. tools/hf-backup.sh +12 -11
tools/hf-backup.sh CHANGED
@@ -4,20 +4,20 @@
4
  set -e
5
 
6
  TS(){ date "+%Y-%m-%d %H:%M:%S"; }
7
- log(){ echo "[$(TS)] [hf-backup] $*"; }
8
 
9
  HF_TOKEN="${HF_TOKEN:-}"
10
  DATASET_ID="${DATASET_ID:-}"
11
 
12
- # 备份相关配置
13
  SYNC_INTERVAL="${SYNC_INTERVAL:-3600}"
14
  MAX_BACKUPS="${MAX_BACKUPS:-10}"
15
  BACKUP_PREFIX="${BACKUP_PREFIX:-crs_backup}"
16
 
17
- # 与 `tar -C /` 配套:建议使用相对路径(不以 / 开头
18
- # 也兼容你传入绝对路径,脚本会自动去掉前导 /
19
- BACKUP_PATHS="${BACKUP_PATHS:-app/data}"
20
- BACKUP_EXCLUDE="${BACKUP_EXCLUDE:-app/data/init.json,app/data/users.json,*.db}"
21
 
22
  HF_PY="/app/tools/hf_backup.py"
23
  TMP_DIR="/tmp/crs_backup"
@@ -33,10 +33,10 @@ mk_archive() {
33
  ts="$(date +%Y%m%d_%H%M%S)"
34
  archive="${TMP_DIR}/${BACKUP_PREFIX}_${ts}.tar.gz"
35
 
36
- # 构造 tar 参数列表避免空格/通配符问题
37
  set -- -czf "$archive"
38
 
39
- # --exclude 参数(逗号分隔),并把绝对路径转为相对路径
40
  IFS=','; for x in $BACKUP_EXCLUDE; do
41
  [ -z "$x" ] && continue
42
  case "$x" in /*) x=${x#/} ;; esac
@@ -46,7 +46,7 @@ mk_archive() {
46
  # 切到根目录
47
  set -- "$@" -C /
48
 
49
- # 追加待打包路径(逗号分隔),并把绝对路径转为相对路径
50
  IFS=','; for p in $BACKUP_PATHS; do
51
  [ -z "$p" ] && continue
52
  case "$p" in /*) p=${p#/} ;; esac
@@ -60,7 +60,8 @@ mk_archive() {
60
 
61
  cmd_upload_once() {
62
  need_hf
63
- archive="$(mk_archive)"
 
64
  log "上传:$archive"
65
  python3 "$HF_PY" upload \
66
  --token "$HF_TOKEN" \
@@ -103,5 +104,5 @@ case "${1:-}" in
103
  restore) cmd_restore ;;
104
  once) cmd_upload_once ;;
105
  daemon) cmd_daemon ;;
106
- *) echo "用法: $0 {restore|once|daemon}"; exit 1 ;;
107
  esac
 
4
  set -e
5
 
6
  TS(){ date "+%Y-%m-%d %H:%M:%S"; }
7
+ log(){ echo "[$(TS)] [hf-backup] $*" >&2; } # 日志走 stderr,避免污染命令替换
8
 
9
  HF_TOKEN="${HF_TOKEN:-}"
10
  DATASET_ID="${DATASET_ID:-}"
11
 
12
+ # 备份配置(相对路径更稳,和 -C / 配合)
13
  SYNC_INTERVAL="${SYNC_INTERVAL:-3600}"
14
  MAX_BACKUPS="${MAX_BACKUPS:-10}"
15
  BACKUP_PREFIX="${BACKUP_PREFIX:-crs_backup}"
16
 
17
+ # 建议默认:数据目录 +(如有redis 数据目录
18
+ BACKUP_PATHS="${BACKUP_PATHS:-app/data,app/data/redis}"
19
+ # 公开/半公开 dataset 可以更激进地排除敏感文件
20
+ BACKUP_EXCLUDE="${BACKUP_EXCLUDE:-app/data/init.json,app/data/users.json,*.tmp,*.cache,**/.DS_Store}"
21
 
22
  HF_PY="/app/tools/hf_backup.py"
23
  TMP_DIR="/tmp/crs_backup"
 
33
  ts="$(date +%Y%m%d_%H%M%S)"
34
  archive="${TMP_DIR}/${BACKUP_PREFIX}_${ts}.tar.gz"
35
 
36
+ # 构造 tar 参数(安全,不受空格/通配影响
37
  set -- -czf "$archive"
38
 
39
+ # --exclude
40
  IFS=','; for x in $BACKUP_EXCLUDE; do
41
  [ -z "$x" ] && continue
42
  case "$x" in /*) x=${x#/} ;; esac
 
46
  # 切到根目录
47
  set -- "$@" -C /
48
 
49
+ # 打包路径
50
  IFS=','; for p in $BACKUP_PATHS; do
51
  [ -z "$p" ] && continue
52
  case "$p" in /*) p=${p#/} ;; esac
 
60
 
61
  cmd_upload_once() {
62
  need_hf
63
+ archive="$(mk_archive)" # 只捕获 stdout 的“文件路径”这一行
64
+ [ -f "$archive" ] || { log "归档不存在:$archive"; return 1; }
65
  log "上传:$archive"
66
  python3 "$HF_PY" upload \
67
  --token "$HF_TOKEN" \
 
104
  restore) cmd_restore ;;
105
  once) cmd_upload_once ;;
106
  daemon) cmd_daemon ;;
107
+ *) echo "用法: $0 {restore|once|daemon}" >&2; exit 1 ;;
108
  esac