lydgs commited on
Commit
cf7ed23
·
verified ·
1 Parent(s): d67c3c1

Update scripts/backup_to_dataset.py

Browse files
Files changed (1) hide show
  1. scripts/backup_to_dataset.py +13 -23
scripts/backup_to_dataset.py CHANGED
@@ -73,11 +73,9 @@ def backup_database():
73
  print(f"✅ 二进制备份成功: {backup_name}")
74
  except Exception as e:
75
  print(f"❌ 二进制上传失败: {e}")
76
- # 继续尝试导出配置,不中断
77
 
78
  # 2. 导出 JSON 配置并打包上传
79
  try:
80
- # 创建临时目录
81
  temp_export_dir = f"/tmp/config_export_{timestamp}"
82
  os.makedirs(temp_export_dir, exist_ok=True)
83
 
@@ -90,7 +88,6 @@ def backup_database():
90
  full_path = os.path.join(temp_export_dir, file)
91
  tar.add(full_path, arcname=file)
92
 
93
- # 上传压缩包
94
  api.upload_file(
95
  path_or_fileobj=tar_path,
96
  path_in_repo=config_tar_name,
@@ -106,33 +103,26 @@ def backup_database():
106
  except Exception as e:
107
  print(f"❌ 配置导出失败: {e}")
108
 
109
- # 3. 清理旧备份(二进制和配置包)
110
  try:
111
  files = api.list_repo_files(repo_id=DATASET_REPO, repo_type="dataset")
112
  now = datetime.datetime.now()
113
  deleted = 0
114
  for f in files:
115
- # 删除超过 RETENTION_DAYS 天的二进制备份和配置包
116
  if f.startswith(BACKUP_PREFIX) or f.startswith(CONFIG_PREFIX):
117
  # 提取时间戳
118
- parts = f.replace(".db", "").replace(".tar.gz", "").split("_")
119
- if len(parts) >= 3:
120
- ts_str = f"{parts[2]}_{parts[3]}" if len(parts) > 3 else parts[2]
121
- # 文件名格式: freeapi_backup_20260602_061721.db config_export_20260602_061721.tar.gz
122
- # 简化:取最后两个部分(日期_时间)
123
- try:
124
- # 尝试解析时间戳
125
- if f.startswith(BACKUP_PREFIX):
126
- ts_part = f.replace(BACKUP_PREFIX + "_", "").replace(".db", "")
127
- else:
128
- ts_part = f.replace(CONFIG_PREFIX + "_", "").replace(".tar.gz", "")
129
- file_time = datetime.datetime.strptime(ts_part, "%Y%m%d_%H%M%S")
130
- if (now - file_time).days > RETENTION_DAYS:
131
- api.delete_file(path_in_repo=f, repo_id=DATASET_REPO, repo_type="dataset")
132
- print(f"🗑️ 已删除旧备份: {f}")
133
- deleted += 1
134
- except Exception as parse_err:
135
- print(f"⚠️ 跳过无法解析的文件: {f} ({parse_err})")
136
  if deleted:
137
  print(f"✅ 清理完成,共删除 {deleted} 个旧备份")
138
  else:
 
73
  print(f"✅ 二进制备份成功: {backup_name}")
74
  except Exception as e:
75
  print(f"❌ 二进制上传失败: {e}")
 
76
 
77
  # 2. 导出 JSON 配置并打包上传
78
  try:
 
79
  temp_export_dir = f"/tmp/config_export_{timestamp}"
80
  os.makedirs(temp_export_dir, exist_ok=True)
81
 
 
88
  full_path = os.path.join(temp_export_dir, file)
89
  tar.add(full_path, arcname=file)
90
 
 
91
  api.upload_file(
92
  path_or_fileobj=tar_path,
93
  path_in_repo=config_tar_name,
 
103
  except Exception as e:
104
  print(f"❌ 配置导出失败: {e}")
105
 
106
+ # 3. 清理旧备份
107
  try:
108
  files = api.list_repo_files(repo_id=DATASET_REPO, repo_type="dataset")
109
  now = datetime.datetime.now()
110
  deleted = 0
111
  for f in files:
 
112
  if f.startswith(BACKUP_PREFIX) or f.startswith(CONFIG_PREFIX):
113
  # 提取时间戳
114
+ if f.startswith(BACKUP_PREFIX):
115
+ ts_part = f.replace(BACKUP_PREFIX + "_", "").replace(".db", "")
116
+ else:
117
+ ts_part = f.replace(CONFIG_PREFIX + "_", "").replace(".tar.gz", "")
118
+ try:
119
+ file_time = datetime.datetime.strptime(ts_part, "%Y%m%d_%H%M%S")
120
+ if (now - file_time).days > RETENTION_DAYS:
121
+ api.delete_file(path_in_repo=f, repo_id=DATASET_REPO, repo_type="dataset")
122
+ print(f"🗑️ 已删除旧备份: {f}")
123
+ deleted += 1
124
+ except Exception:
125
+ pass
 
 
 
 
 
 
126
  if deleted:
127
  print(f"✅ 清理完成,共删除 {deleted} 个旧备份")
128
  else: