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

说明



这不是一个插件,因为sponge在mcbbs上一直没有一个备份插件

我也试着在Ore上找过备份插件,然而没有比较满意的。



开服务器的难免会遇到一些特殊情况会导致数据丢失错误,有的很容易就可以修复,有的则很麻烦。

如果出现了意外,对于一些没有或者只有一些基础的人来说,等于要开新周目。



在最近几个月里面,我自己的服务器已经出现了几次玩家触发各种各样的特殊buff导致服务器崩溃,无限重启,甚至有一次无法恢复,因为开服时间不长,开新周目了。



我能力有限,虽然可以自己改改插件,但是目前还没有可以独立写插件的能力,写这个帖子只是为了在一个好的备份插件出现之前,可以解决一些sponge服主的数据安全问题





方法


配合自动重启插件,使用脚本来备份服务器的关键数据!

环境:windows server(会用linux的,自己小改一下就好啦)

我脚本对应的环境:
服务器存储在   D:\Spongeforge-1.12.2
临时拷贝的文件位置在  D:\backup
备份文件存在  E:\Backup
请根据自己的情况,修改脚本

首先在服务器启动脚本服务器启动指令后面加上

  1. xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\world D:\backup\world\
复制代码
用于从sponge里面拷贝出地图和插件配置文件到其他地方(我们后面使用start指令来单独跑压缩备份,可以减少服务器因为备份增加的重启时间)

如果你有比如权限组,基础插件,或者说其他的一些东西也需要备份的话,那么可以自己添加


然后加入

  1. start D:\Spongeforge-1.12.2\备份脚本.bat
复制代码
来启动额外的进程来备份,备份脚本的位置根据实际情况更改,我这里是和启动脚本放在了一个目录下


新建对应上面命令的文件,并写入

  1. [url=home.php?mod=space&uid=39305]@echo[/url] off
  2. title 正在备份服务器地图...
  3. echo ┌────────────────────────────┐
  4. echo │                            │
  5. echo │     正在备份服务器地图     │
  6. echo │                            │
  7. echo └────────────────────────────┘
  8. echo.
  9. 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
  10. rmdir /s /q D:\backup
  11. echo 备份完毕,即将退出脚本...
  12. timeout 5
  13. exit
复制代码
这里的意思是将前面拷出的D:\backup\文件利用 2345好压 的命令行压缩来压缩到E:\Backup\目录下
生成的文件名是当前的时间,格式是:年_月_日,小时_分钟_秒.zip
因为是利用系统变量time来生成文件名,而系统变量time在时间小于12小时的时候比如早上8点,是输出8,而不是08会导致少一位,所以需要if来判断,于是会有两个指令

我这里是因为随便装的压缩软件,所以就调用了这个压缩软件的核心,如果是其他的软件,找到对应的压缩命令行程序,修改一下就行了,后面我会传一个简单的zip并附对应命令(但是慎用,当服务器地图越来越大的时候,可能会无法压缩)

然后我们有了备份文件,但是时间长了之后,文件会特别多,我们需要进行文件的自动清理
  1. cls
  2. title 正在删除过期的备份文件...
  3. echo ┌────────────────────────────┐
  4. echo │                            │
  5. echo │   正在删除过期的备份文件   │
  6. echo │                            │
  7. echo └────────────────────────────┘
  8. echo ---------------------------------------------------
  9. forfiles /p "E:\Backup" /m ????_??_??,??_??_??.zip /d -15 /c "cmd /c del @path /q /f"
  10. forfiles /p "E:\Backup" /m ????_??_??,1?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  11. forfiles /p "E:\Backup" /m ????_??_??,2?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  12. forfiles /p "E:\Backup" /m ????_??_??,00_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  13. forfiles /p "E:\Backup" /m ????_??_??,02_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  14. forfiles /p "E:\Backup" /m ????_??_??,06_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  15. forfiles /p "E:\Backup" /m ????_??_??,08_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  16. forfiles /p "E:\Backup" /m ????_??_??,?1_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  17. forfiles /p "E:\Backup" /m ????_??_??,?7_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  18. forfiles /p "E:\Backup" /m ????_??_??,?9_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  19. forfiles /p "E:\Backup" /m ????_??_??,13_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  20. forfiles /p "E:\Backup" /m ????_??_??,23_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  21. forfiles /p "E:\Backup" /m ????_??_??,15_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  22. timeout 2
复制代码
正常下一天会有8个备份文件,加入了这个之后
当天最多8个备份
1~3天的每天有4份备份
3~7天的每天有2个备份
7~15天的每天有1个备份

为了防止服务器出现问题之后,无限重启无限短时间备份出现问题,加入一个判断来暂停服务器
  1. if exist D:\backup (
  2. echo.
  3. echo 服务器存在问题,已暂停运行...
  4. echo.
  5. pause
  6. )
复制代码

然后大家根据实际情况来改变脚本

最后贴一份我自己的脚本

启动脚本
  1. @echo off
  2. :START
  3. title Spongeforge-1.12.2
  4. echo 启动 %DATE% %time%>>opentime.txt
  5. java -Xms2G -Xmx11G -jar forge-1.12.2-14.23.5.2838-universal.jar
  6. echo 关闭 %DATE% %time%>>opentime.txt
  7. echo 准备备份服务器地图...
  8. timeout 3

  9. if exist D:\backup (
  10. echo.
  11. echo 服务器存在问题,已暂停运行...
  12. echo.
  13. pause
  14. )

  15. cls
  16. title 正在删除过期的备份文件...
  17. echo ┌────────────────────────────┐
  18. echo │                            │
  19. echo │   正在删除过期的备份文件   │
  20. echo │                            │
  21. echo └────────────────────────────┘
  22. echo ---------------------------------------------------
  23. forfiles /p "E:\Backup" /m ????_??_??,??_??_??.zip /d -15 /c "cmd /c del @path /q /f"
  24. forfiles /p "E:\Backup" /m ????_??_??,1?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  25. forfiles /p "E:\Backup" /m ????_??_??,2?_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  26. forfiles /p "E:\Backup" /m ????_??_??,00_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  27. forfiles /p "E:\Backup" /m ????_??_??,02_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  28. forfiles /p "E:\Backup" /m ????_??_??,06_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  29. forfiles /p "E:\Backup" /m ????_??_??,08_??_??.zip /d -8 /c "cmd /c del @path /q /f"
  30. forfiles /p "E:\Backup" /m ????_??_??,?1_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  31. forfiles /p "E:\Backup" /m ????_??_??,?7_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  32. forfiles /p "E:\Backup" /m ????_??_??,?9_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  33. forfiles /p "E:\Backup" /m ????_??_??,13_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  34. forfiles /p "E:\Backup" /m ????_??_??,23_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  35. forfiles /p "E:\Backup" /m ????_??_??,15_??_??.zip /d -4 /c "cmd /c del @path /q /f"
  36. timeout 2
  37. cls
  38. title 正在复制服务器数据...
  39. echo ┌────────────────────────────┐
  40. echo │                            │
  41. echo │     正在复制服务器数据     │
  42. echo │                            │
  43. echo └────────────────────────────┘
  44. echo.
  45. echo 正在复制配方数据...
  46. xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\scripts D:\backup\scripts\
  47. echo.
  48. echo 正在复制玩家数据...
  49. xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\playerdata D:\backup\playerdata\
  50. echo.
  51. echo 正在复制权限配置...
  52. xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\luckperms D:\backup\luckperms\
  53. echo.
  54. echo 正在复制插件数据...
  55. xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\nucleus D:\backup\nucleus\
  56. echo.
  57. echo 正在复制插件配置...
  58. xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\config D:\backup\config\
  59. echo.
  60. echo 正在复制地图文件...
  61. xcopy /e /q /h /r /k /y D:\Spongeforge-1.12.2\world D:\backup\world\
  62. echo.
  63. echo 启动备份脚本...
  64. timeout 2
  65. start D:\Spongeforge-1.12.2\备份脚本.bat
  66. cls
  67. goto START
  68. pause
复制代码

备份脚本
  1. @echo off
  2. title 正在备份服务器地图...
  3. echo ┌────────────────────────────┐
  4. echo │                            │
  5. echo │     正在备份服务器地图     │
  6. echo │                            │
  7. echo └────────────────────────────┘
  8. echo.
  9. 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
  10. rmdir /s /q D:\backup
  11. echo 备份完毕,即将退出脚本...
  12. timeout 5
  13. exit
复制代码

zip命令.zip (149.43 KB, 下载次数: 21)
压缩命令: zip.exe -q -r 压缩出的文件.zip 被压缩文件的路径

qq2415786013
有点看不懂

Tmeex
MCBBS有你更精彩 ~
看完了全程 整体来说还不错
适合小白服主
但是是否能讲一下部分重要的CMD指令的用途
有一部分人可能会看不懂

1207365961
感谢作者分享

第一页 上一页 下一页 最后一页