32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
|
import os
|
|||
|
import zipfile
|
|||
|
from datetime import datetime
|
|||
|
|
|||
|
def backup_topic():
|
|||
|
# 源目录路径
|
|||
|
source_dir = r'd:\dsWork\dsProject\dsLightRag\Topic'
|
|||
|
# 备份目录路径
|
|||
|
backup_dir = r'D:\dsWork\dsProject\dsLightRag\Backup'
|
|||
|
|
|||
|
# 创建备份目录(如果不存在)
|
|||
|
os.makedirs(backup_dir, exist_ok=True)
|
|||
|
|
|||
|
# 生成带时间戳的文件名
|
|||
|
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
|
|||
|
zip_filename = f'{timestamp}.zip'
|
|||
|
zip_path = os.path.join(backup_dir, zip_filename)
|
|||
|
|
|||
|
# 以最高压缩率创建ZIP文件
|
|||
|
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED, compresslevel=9) as zipf:
|
|||
|
# 遍历源目录中的所有文件和子目录
|
|||
|
for root, dirs, files in os.walk(source_dir):
|
|||
|
for file in files:
|
|||
|
file_path = os.path.join(root, file)
|
|||
|
# 计算相对路径,避免在ZIP中包含绝对路径
|
|||
|
relative_path = os.path.relpath(file_path, source_dir)
|
|||
|
zipf.write(file_path, arcname=relative_path)
|
|||
|
|
|||
|
print(f"备份完成: {zip_path}")
|
|||
|
|
|||
|
if __name__ == "__main__":
|
|||
|
backup_topic()
|