mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
import shutil
|
|
from pathlib import Path
|
|
|
|
from nonebot_plugin_apscheduler import scheduler
|
|
|
|
from zhenxun.configs.config import Config
|
|
from zhenxun.services.log import logger
|
|
|
|
Config.add_plugin_config(
|
|
"_backup",
|
|
"BACKUP_FLAG",
|
|
True,
|
|
help="是否开启文件备份",
|
|
default_value=True,
|
|
type=bool,
|
|
)
|
|
|
|
Config.add_plugin_config(
|
|
"_backup",
|
|
"BACKUP_DIR_OR_FILE",
|
|
[
|
|
"data/black_word",
|
|
"data/configs",
|
|
"data/statistics",
|
|
"data/word_bank",
|
|
"data/manager",
|
|
"configs",
|
|
],
|
|
help="备份的文件夹或文件",
|
|
default_value=[],
|
|
type=list[str],
|
|
)
|
|
|
|
|
|
# 自动备份
|
|
@scheduler.scheduled_job(
|
|
"cron",
|
|
hour=3,
|
|
minute=25,
|
|
)
|
|
async def _():
|
|
if Config.get_config("_backup", "BACKUP_FLAG"):
|
|
_backup_path = Path() / "backup"
|
|
_backup_path.mkdir(exist_ok=True, parents=True)
|
|
if backup_dir_or_file := Config.get_config("_backup", "BACKUP_DIR_OR_FILE"):
|
|
for path_file in backup_dir_or_file:
|
|
try:
|
|
path = Path(path_file)
|
|
_p = _backup_path / path_file
|
|
if path.exists():
|
|
if path.is_dir():
|
|
if _p.exists():
|
|
shutil.rmtree(_p, ignore_errors=True)
|
|
shutil.copytree(path_file, _p)
|
|
else:
|
|
if _p.exists():
|
|
_p.unlink()
|
|
shutil.copy(path_file, _p)
|
|
logger.debug(f"已完成自动备份:{path_file}", "自动备份")
|
|
except Exception as e:
|
|
logger.error(f"自动备份文件 {path_file} 发生错误", "自动备份", e=e)
|
|
logger.info("自动备份成功...", "自动备份")
|