[split-upload 1/6] f2fd4fa backup via proxy
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
删除 A类(186) + B1类(36) 共 222 个已验证重复旧文件。
|
||||
铁律:仅当「新结构副本存在」时才删除旧文件,否则跳过并报错,绝不盲删。
|
||||
C类(39) 与 b2(9) 不在此脚本处理范围。
|
||||
"""
|
||||
import json, os
|
||||
|
||||
ROOT = "docs"
|
||||
|
||||
d = json.load(open('docs_cmp_result2.json', encoding='utf-8'))
|
||||
content_dup = d['content_dup'] # [old, new]
|
||||
name_diff = d['name_diff'] # [old, om, os, new, nm, ns]
|
||||
|
||||
# b2 旧路径集合(已抢救,不可删)
|
||||
b3 = json.load(open('docs_cmp_result3.json', encoding='utf-8'))
|
||||
b2_old = set()
|
||||
for row in b3.get('b2', []):
|
||||
b2_old.add(row[0])
|
||||
|
||||
def norm(p):
|
||||
return os.path.normpath(os.path.join(ROOT, p))
|
||||
|
||||
delete_list = [] # (old_abs, reason, new_abs)
|
||||
# A类
|
||||
for old, new in content_dup:
|
||||
delete_list.append((norm(old), 'A-content_dup', norm(new)))
|
||||
# B1类 = name_diff 中不在 b2 的
|
||||
b1_count = 0
|
||||
for row in name_diff:
|
||||
old, new = row[0], row[3]
|
||||
if old in b2_old:
|
||||
continue
|
||||
delete_list.append((norm(old), 'B1-name_diff', norm(new)))
|
||||
b1_count += 1
|
||||
|
||||
print("待删总数:", len(delete_list), "(A=%d, B1=%d)" % (len(content_dup), b1_count))
|
||||
|
||||
deleted, skipped = [], []
|
||||
for old_abs, reason, new_abs in delete_list:
|
||||
if not os.path.isfile(new_abs):
|
||||
skipped.append((old_abs, "NEW_MISSING:" + new_abs))
|
||||
continue
|
||||
if not os.path.isfile(old_abs):
|
||||
skipped.append((old_abs, "OLD_MISSING"))
|
||||
continue
|
||||
try:
|
||||
os.remove(old_abs)
|
||||
deleted.append((old_abs, reason))
|
||||
except Exception as e:
|
||||
skipped.append((old_abs, "ERR:" + str(e)))
|
||||
|
||||
print("DELETED:", len(deleted))
|
||||
print("SKIPPED:", len(skipped))
|
||||
for p, r in skipped:
|
||||
print(" SKIP", p, "::", r)
|
||||
Reference in New Issue
Block a user