Python 定时保存幻兽帕鲁云服务器存档数据

Python 定时保存幻兽帕鲁云服务器存档数据


在这里插入图片描述

支持的功能

  • 可配置定时保存存档未zip 格式为 日期+目录名.zip
  • 可配置最大保存数量上限 如超过300个后删除最先保存的存档
  • 每次启动自动保存一份

可执行Exe文件下载

https://geek7.lanzv.com/iRYTV1ongxqj

项目开源仓库

git仓库源码

核心源码解析

import json,zipfile,os,time,sys
from apscheduler.schedulers.blocking import BlockingScheduler

# 程序工作目录
work_path = os.path.dirname(os.path.realpath(sys.argv[0]))
print(f'work path: {work_path}')

# 存档目录
savegames_path = os.path.join(work_path,"../SaveGames")
print(f'SaveGames path: {savegames_path}');
 
# 备份目录
backups_path = os.path.join(work_path,"backups")
backups_dirs = []
backups_count = 0
print(f'backups path: {backups_path}')
if not os.path.exists(backups_path):
    os.makedirs(backups_path)
    print(f'makedir success: {backups_path}')
else:
    #获取本地备份存档目录并按照时间排序
    backups_dirs = os.listdir(backups_path)
    backups_count = len(backups_dirs)
    def dir_sort_fun( dirname:str ):
        ts = dirname.split('_')[2].split('.')[0]
        its = int(ts)
        return its
    if backups_count > 1:
        backups_dirs.sort(key=dir_sort_fun)
        print('---存档备份列表---')   
        for _dir in backups_dirs:
            print(f'---{_dir.removesuffix(".zip")}\t{os.path.join(backups_path,_dir)}')
        print('---存档备份列表---')
    
    
# 读取配置
conf = json.load(open(os.path.join(work_path,'conf.json'),'r',encoding='utf-8'))
save_rate_minutes = conf['save_rate']
max_backups_count = conf['max_backups_count']

isInttype = type(save_rate_minutes) == int
if not isInttype:
    raise RuntimeError('conf.json save_rate 必须为整形')
print(f'存档间隔: {save_rate_minutes}分')

#保存配置为zip
def save2zip():
    global backups_count
    
    # 归档带上日期和时间 
    datestr = time.strftime("%Y-%m-%d %H.%M.%S", time.localtime())
    sortflag = int(time.time())
    save_name = f'SaveGames_{datestr}_{sortflag}.zip'
    backups_count+=1
    backups_dirs.append(save_name)
    
    #压缩至本地
    try:
        zipDir( savegames_path, f'{backups_path}\\{save_name}' )
    except Exception as e:
        print(f'存档失败: {datestr}')
        print(e)
    finally:
        print(f'存档完成: {datestr}')

# 压缩文件夹
def zipDir(dirpath, outFullName):
    """
    压缩指定文件夹
    :param dirpath: 目标文件夹路径
    :param outFullName: 压缩文件保存路径+xxxx.zip
    :return: 无
    """
    zip = zipfile.ZipFile(outFullName, "w", zipfile.ZIP_DEFLATED)
    for path, dirnames, filenames in os.walk(dirpath):
        # 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
        fpath = path.replace(dirpath, '')
 
        for filename in filenames:
            zip.write(os.path.join(path, filename), os.path.join(fpath, filename))

#定时清理
def stripFront():
    global backups_count
    
    if backups_count > max_backups_count:
        _dirname = backups_dirs.pop(0)
        dirpath = os.path.join(backups_path,_dirname)
        if os.path.exists(dirpath):
            os.remove(dirpath)
            backups_count -= 1
            print(f'del {dirpath}')
 
# 运行 主动备份一次
save2zip()

# 间隔一段时间存档一次
def tick_event():
    save2zip()
    stripFront()

# BlockingScheduler
sched = BlockingScheduler()
sched.add_job(tick_event, 'interval', minutes=save_rate_minutes, id='my_job_id')
sched.start()

print('结束运行')
input("")


视频教程

https://www.bilibili.com/video/BV1XW421P77Z/?spm_id_from=333.999.0.0&vd_source=144e0a15a312c88bfe222df707be48d5

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
幻兽帕鲁服务器的搭建教程及注意事项可以参考以下步骤: 1. 下载并安装Java Development Kit(JDK):幻兽帕鲁服务器是基于Java开发的,所以需要先安装JDK。你可以从Oracle官网下载适合你操作系统的JDK版本,并按照安装向导进行安装。 2. 下载幻兽帕鲁服务器文件:你可以从官方网站或其他可信的来源下载幻兽帕鲁服务器的安装文件。确保下载的文件是最新版本,并且与你的操作系统兼容。 3. 创建服务器文件夹:在你想要存放服务器文件的位置创建一个文件夹。这将是你的服务器的根目录。 4. 解压服务器文件:将下载的幻兽帕鲁服务器文件解压到刚刚创建的服务器文件夹中。 5. 配置服务器:在服务器文件夹中找到一个名为"server.properties"的文件,用文本编辑器打开它。在这个文件中,你可以设置服务器的各种参数,如服务器名称、游戏模式、难度等。根据你的需求进行相应的配置。 6. 启动服务器:在命令行中进入服务器文件夹,并运行以下命令来启动服务器: ```shell java -Xmx1024M -Xms1024M -jar server.jar nogui ``` 这将分配1GB的内存给服务器,并以无图形界面的方式运行。 7. 等待服务器启动:一旦你看到命令行中显示"Done",表示服务器已经成功启动。此时,你可以在游戏中使用服务器的IP地址连接到服务器。 注意事项: - 在搭建服务器之前,确保你的计算机满足幻兽帕鲁服务器的系统要求。 - 在配置服务器时,确保你设置了适当的安全措施,如设置管理员密码、限制玩家数量等。 - 定期备份服务器文件,以防止数据丢失。 - 遵守幻兽帕鲁服务器的使用规则和条款,以确保良好的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客柒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值