本帖最后由 娄敬 于 2019-7-30 18:47 编辑

复制代码用于从sponge里面拷贝出地图和插件配置文件到其他地方(我们后面使用start指令来单独跑压缩备份,可以减少服务器因为备份增加的重启时间)
复制代码来启动额外的进程来备份,备份脚本的位置根据实际情况更改,我这里是和启动脚本放在了一个目录下
复制代码这里的意思是将前面拷出的D:\backup\文件利用 2345好压 的命令行压缩来压缩到E:\Backup\目录下
复制代码正常下一天会有8个备份文件,加入了这个之后
复制代码
复制代码
复制代码
zip命令.zip
(149.43 KB, 下载次数: 21)
说明
这不是一个插件,因为sponge在mcbbs上一直没有一个备份插件
我也试着在Ore上找过备份插件,然而没有比较满意的。
开服务器的难免会遇到一些特殊情况会导致数据丢失错误,有的很容易就可以修复,有的则很麻烦。
如果出现了意外,对于一些没有或者只有一些基础的人来说,等于要开新周目。
在最近几个月里面,我自己的服务器已经出现了几次玩家触发各种各样的特殊buff导致服务器崩溃,无限重启,甚至有一次无法恢复,因为开服时间不长,开新周目了。
我能力有限,虽然可以自己改改插件,但是目前还没有可以独立写插件的能力,写这个帖子只是为了在一个好的备份插件出现之前,可以解决一些sponge服主的数据安全问题。

方法
配合自动重启插件,使用脚本来备份服务器的关键数据!
环境:windows server(会用linux的,自己小改一下就好啦)
我脚本对应的环境:
服务器存储在 D:\Spongeforge-1.12.2
临时拷贝的文件位置在 D:\backup
备份文件存在 E:\Backup
请根据自己的情况,修改脚本
首先在服务器启动脚本服务器启动指令后面加上
- xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\world D:\backup\world\
如果你有比如权限组,基础插件,或者说其他的一些东西也需要备份的话,那么可以自己添加
然后加入
- start D:\Spongeforge-1.12.2\备份脚本.bat
新建对应上面命令的文件,并写入
- [url=home.php?mod=space&uid=39305]@echo[/url] off
- title 正在备份服务器地图...
- echo ┌────────────────────────────┐
- echo │ │
- echo │ 正在备份服务器地图 │
- echo │ │
- echo └────────────────────────────┘
- echo.
- if "%time:~0,1%"==" " (HaozipC a -tzip E:\Backup\%date:~0,4%_%date:~5,2%_%date:~8,2%,0%time:~1,1%_%time:~3,2%_%time:~6,2%.zip D:\Backup) else HaozipC a -tzip E:\Backup\%date:~0,4%_%date:~5,2%_%date:~8,2%,%time:~0,2%_%time:~3,2%_%time:~6,2%.zip D:\Backup
- rmdir /s /q D:\backup
- echo 备份完毕,即将退出脚本...
- timeout 5
- exit
生成的文件名是当前的时间,格式是:年_月_日,小时_分钟_秒.zip
因为是利用系统变量time来生成文件名,而系统变量time在时间小于12小时的时候比如早上8点,是输出8,而不是08会导致少一位,所以需要if来判断,于是会有两个指令
我这里是因为随便装的压缩软件,所以就调用了这个压缩软件的核心,如果是其他的软件,找到对应的压缩命令行程序,修改一下就行了,后面我会传一个简单的zip并附对应命令(但是慎用,当服务器地图越来越大的时候,可能会无法压缩)
然后我们有了备份文件,但是时间长了之后,文件会特别多,我们需要进行文件的自动清理
- cls
- title 正在删除过期的备份文件...
- echo ┌────────────────────────────┐
- echo │ │
- echo │ 正在删除过期的备份文件 │
- echo │ │
- echo └────────────────────────────┘
- echo ---------------------------------------------------
- forfiles /p "E:\Backup" /m ????_??_??,??_??_??.zip /d -15 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,1?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,2?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,00_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,02_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,06_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,08_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,?1_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,?7_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,?9_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,13_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,23_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,15_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- timeout 2
当天最多8个备份
1~3天的每天有4份备份
3~7天的每天有2个备份
7~15天的每天有1个备份
为了防止服务器出现问题之后,无限重启无限短时间备份出现问题,加入一个判断来暂停服务器
- if exist D:\backup (
- echo.
- echo 服务器存在问题,已暂停运行...
- echo.
- pause
- )
然后大家根据实际情况来改变脚本
最后贴一份我自己的脚本
启动脚本
- @echo off
- :START
- title Spongeforge-1.12.2
- echo 启动 %DATE% %time%>>opentime.txt
- java -Xms2G -Xmx11G -jar forge-1.12.2-14.23.5.2838-universal.jar
- echo 关闭 %DATE% %time%>>opentime.txt
- echo 准备备份服务器地图...
- timeout 3
- if exist D:\backup (
- echo.
- echo 服务器存在问题,已暂停运行...
- echo.
- pause
- )
- cls
- title 正在删除过期的备份文件...
- echo ┌────────────────────────────┐
- echo │ │
- echo │ 正在删除过期的备份文件 │
- echo │ │
- echo └────────────────────────────┘
- echo ---------------------------------------------------
- forfiles /p "E:\Backup" /m ????_??_??,??_??_??.zip /d -15 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,1?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,2?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,00_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,02_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,06_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,08_??_??.zip /d -8 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,?1_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,?7_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,?9_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,13_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,23_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- forfiles /p "E:\Backup" /m ????_??_??,15_??_??.zip /d -4 /c "cmd /c del @path /q /f"
- timeout 2
- cls
- title 正在复制服务器数据...
- echo ┌────────────────────────────┐
- echo │ │
- echo │ 正在复制服务器数据 │
- echo │ │
- echo └────────────────────────────┘
- echo.
- echo 正在复制配方数据...
- xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\scripts D:\backup\scripts\
- echo.
- echo 正在复制玩家数据...
- xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\playerdata D:\backup\playerdata\
- echo.
- echo 正在复制权限配置...
- xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\luckperms D:\backup\luckperms\
- echo.
- echo 正在复制插件数据...
- xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\nucleus D:\backup\nucleus\
- echo.
- echo 正在复制插件配置...
- xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\config D:\backup\config\
- echo.
- echo 正在复制地图文件...
- xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\world D:\backup\world\
- echo.
- echo 启动备份脚本...
- timeout 2
- start D:\Spongeforge-1.12.2\备份脚本.bat
- cls
- goto START
- pause
备份脚本
- @echo off
- title 正在备份服务器地图...
- echo ┌────────────────────────────┐
- echo │ │
- echo │ 正在备份服务器地图 │
- echo │ │
- echo └────────────────────────────┘
- echo.
- if "%time:~0,1%"==" " (HaozipC a -tzip E:\Backup\%date:~0,4%_%date:~5,2%_%date:~8,2%,0%time:~1,1%_%time:~3,2%_%time:~6,2%.zip D:\Backup) else HaozipC a -tzip E:\Backup\%date:~0,4%_%date:~5,2%_%date:~8,2%,%time:~0,2%_%time:~3,2%_%time:~6,2%.zip D:\Backup
- rmdir /s /q D:\backup
- echo 备份完毕,即将退出脚本...
- timeout 5
- exit

压缩命令: zip.exe -q -r 压缩出的文件.zip 被压缩文件的路径
有点看不懂
MCBBS有你更精彩 ~
看完了全程 整体来说还不错
适合小白服主
但是是否能讲一下部分重要的CMD指令的用途
有一部分人可能会看不懂
看完了全程 整体来说还不错
适合小白服主
但是是否能讲一下部分重要的CMD指令的用途
有一部分人可能会看不懂
感谢作者分享