MCPcopy Create free account
hub / github.com/aaPanel/BaoTa / initialize_backup_folder

Function initialize_backup_folder

script/initialize_backup.py:8–56  ·  view source on GitHub ↗
(src_folder)

Source from the content-addressed store, hash-verified

6import public
7
8def initialize_backup_folder(src_folder):
9 print(src_folder)
10 file_names_in_db = set()
11 src_folder_name = os.path.basename(src_folder) # 提取源文件夹的名称
12 backup_path = public.M('config').where("id=?", ('1',)).getField('backup_path')
13 if not backup_path.endswith('/'):
14 backup_path += '/'
15 target_directory = '{}/backup_site_file'.format(backup_path) # 备份文件所在的文件夹
16 backup_folder = os.path.join(target_directory, src_folder_name)
17 init_marker = os.path.join(backup_folder, 'initialized.pl')
18 if os.path.exists(backup_folder):
19 data = public.M('crontab').where('sName=?', (src_folder,)).select()
20 if data:
21 cron_id = data[0]['id']
22 backupTo = "localhost"
23 # 定义正则表达式,匹配形如 20240906150534_all_444444444444.com.zip 的文件
24 pattern = re.compile(r'^\d{14}_(all_)?' + re.escape(src_folder_name) + r'\.zip$')
25
26 # 初始化:检查是否存在标记文件
27 if not os.path.exists(init_marker):
28 print("正在进行初始化...")
29
30 # 扫描文件夹中的备份文件,并写入数据库
31 if os.path.exists(backup_folder):
32 for filename in os.listdir(backup_folder):
33 print(filename)
34 # 使用正则表达式匹配文件名,并确保包含 src_folder_name
35 if pattern.match(filename) and src_folder_name in filename:
36
37
38 file_path = os.path.join(backup_folder, filename)
39 file_stat = os.stat(file_path)
40 size_in_kb = file_stat.st_size
41 # 修正后的上传路径拼接
42 upload_path = os.path.join(backup_path, "backup_site_file", src_folder_name, filename)
43 cloud_backup_path = upload_path
44 # 查询数据库,看是否已存在该文件名
45 existing_record = public.M('backup_site_file').where('name=?', (cloud_backup_path,)).find()
46 if existing_record:
47
48 print(f"文件 {filename} 已存在,跳过插入。")
49 continue
50 # 插入数据库
51 public.M('backup_site_file').add(
52 'cron_id, type, name, filename, size, addtime, src_folder, backupTo',
53 (cron_id, 1 if 'all' in filename else 0, cloud_backup_path, cloud_backup_path, '{:.2f}'.format(size_in_kb), public.format_date(), src_folder, backupTo)
54 )
55 public.writeFile(init_marker,"")
56 print("初始化完成")
57
58# 主入口
59if __name__ == "__main__":

Callers 1

Calls 15

basenameMethod · 0.80
listdirMethod · 0.80
statMethod · 0.80
writeFileMethod · 0.80
setFunction · 0.50
getFieldMethod · 0.45
whereMethod · 0.45
MMethod · 0.45
formatMethod · 0.45
joinMethod · 0.45
existsMethod · 0.45
selectMethod · 0.45

Tested by

no test coverage detected