| import os |
| import time |
| import sys |
| import re |
| sys.path.insert(0, "/www/server/panel/class/") |
| import public |
|
|
| def initialize_backup_folder(src_folder): |
| print(src_folder) |
| file_names_in_db = set() |
| src_folder_name = os.path.basename(src_folder) |
| backup_path = public.M('config').where("id=?", ('1',)).getField('backup_path') |
| if not backup_path.endswith('/'): |
| backup_path += '/' |
| target_directory = '{}/backup_site_file'.format(backup_path) |
| backup_folder = os.path.join(target_directory, src_folder_name) |
| init_marker = os.path.join(backup_folder, 'initialized.pl') |
| if os.path.exists(backup_folder): |
| data = public.M('crontab').where('sName=?', (src_folder,)).select() |
| if data: |
| cron_id = data[0]['id'] |
| backupTo = "localhost" |
| |
| pattern = re.compile(r'^\d{14}_(all_)?' + re.escape(src_folder_name) + r'\.zip$') |
| |
| |
| if not os.path.exists(init_marker): |
| print("正在进行初始化...") |
|
|
| |
| if os.path.exists(backup_folder): |
| for filename in os.listdir(backup_folder): |
| print(filename) |
| |
| if pattern.match(filename) and src_folder_name in filename: |
|
|
|
|
| file_path = os.path.join(backup_folder, filename) |
| file_stat = os.stat(file_path) |
| size_in_kb = file_stat.st_size |
| |
| upload_path = os.path.join(backup_path, "backup_site_file", src_folder_name, filename) |
| cloud_backup_path = upload_path |
| |
| existing_record = public.M('backup_site_file').where('name=?', (cloud_backup_path,)).find() |
| if existing_record: |
| |
| print(f"文件 {filename} 已存在,跳过插入。") |
| continue |
| |
| public.M('backup_site_file').add( |
| 'cron_id, type, name, filename, size, addtime, src_folder, backupTo', |
| (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) |
| ) |
| public.writeFile(init_marker,"") |
| print("初始化完成") |
|
|
| |
| if __name__ == "__main__": |
| if len(sys.argv) < 2: |
| print("请提供备份的源目录路径!") |
| sys.exit(1) |
|
|
| |
| src_folder = sys.argv[1] |
| initialize_backup_folder(src_folder) |
|
|