MC服务器备份脚本

前言

最近开了个mc服务器,为了提高数据的安全性,使用python写了个简单的备份脚本

备份存档数据

代码如下:

# -*- coding: utf-8 -*-

import os
import zipfile
import datetime

# 设置备份目录和备份文件名
backup_dir = "/home/minecraft/backups"
server_path = "/data/server"

def backup_minecraft_server():
    # 切换到服务器目录
    os.chdir(server_path)

    # 备份world世界
    world_backup_file = "world_{}.zip".format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
    with zipfile.ZipFile(os.path.join(backup_dir, world_backup_file), "w", zipfile.ZIP_DEFLATED) as archive:
        for root, dirs, files in os.walk("world"):
            for file in files:
                archive.write(os.path.join(root, file))

    # 备份world_nether世界
    nether_backup_file = "world_nether_{}.zip".format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
    with zipfile.ZipFile(os.path.join(backup_dir, nether_backup_file), "w", zipfile.ZIP_DEFLATED) as archive:
        for root, dirs, files in os.walk("world_nether"):
            for file in files:
                archive.write(os.path.join(root, file))

    # 备份world_the_end世界
    end_backup_file = "world_the_end_{}.zip".format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
    with zipfile.ZipFile(os.path.join(backup_dir, end_backup_file), "w", zipfile.ZIP_DEFLATED) as archive:
        for root, dirs, files in os.walk("world_the_end"):
            for file in files:
                archive.write(os.path.join(root, file))

    # 合并备份文件
    merged_backup_file = "minecraft_backup_{}.zip".format(datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S'))
    with zipfile.ZipFile(os.path.join(backup_dir, merged_backup_file), "w", zipfile.ZIP_DEFLATED) as archive:
        archive.write(os.path.join(backup_dir, world_backup_file), arcname="world.zip")
        archive.write(os.path.join(backup_dir, nether_backup_file), arcname="world_nether.zip")
        archive.write(os.path.join(backup_dir, end_backup_file), arcname="world_the_end.zip")

    # 删除临时备份文件
    os.remove(os.path.join(backup_dir, world_backup_file))
    os.remove(os.path.join(backup_dir, nether_backup_file))
    os.remove(os.path.join(backup_dir, end_backup_file))

    # 删除7天前的备份
    for file_name in os.listdir(backup_dir):
        file_path = os.path.join(backup_dir, file_name)
        if os.path.isfile(file_path):
            file_time = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
            if (datetime.datetime.now() - file_time).days > 7:
                os.remove(file_path)

if __name__ == "__main__":
    backup_minecraft_server()

添加定时任务

0 3 * * * python /path/to/backup.py

每天凌晨三点备份 

后续添加

1.异地备份(OSS对象存储)

2.查看备份日志

你可能感兴趣的:(服务器,linux,运维)