本帖最后由 dfc643 于 2014-7-31 15:57 编辑
想必大家有部分人是在 VPS 上面开的 Minecraft 服务器,但是对于 Minecraft 来说地图数据简直非常重要。但是一旦数据丢了可不得了。所以呢咱就编写了一个自动上传百度云的 PHP 脚本。适合在 Linux 的服务器上运行。可以自动将数据打包上传至百度网盘。
另外值得一提的是,由于太懒就直接调用系统 shell 了,这样也可以方便改写成 shell 脚本,则可以省去 php 这样的东西了。
另外近期作成 Windows 版本请继续往下看
Linux 软件包要求:
php5 zip 以及 curl cron
Linux 版如何使用:
1、将 mcbkp.php 中的相关目录路径更换成您的相关路径。
2、请填写您的 百度API 的 AccessToken 代码。
3、为 Linux 计划任务 Cron 添加一条新计划任务。
crontab -e 范例:
0 */6 * * * php /root/mcbkp.php #每隔 6 小时自动上传 MC 数据到百度网盘
mcbkp.php 程序代码 (Linux版):
复制代码mcbkp.sh (Shell版本):
由于 aa210063654 提供,感谢作者
复制代码

Windows 版如何使用
1、将压缩包里面的 mcbkp 文件夹与 mcbkp.php 解压到 C 盘根目录
2、在系统中添加环境变量 (见附件中的图)
3、修改 mcbkp.php 中的相关参数,请使用 utf-8 编辑器如 notepad++
4、在控制面板中添加一项计划任务(见附件中的图)
5、下载地址:http://pan.baidu.com/s/1pJt1Ps3
mcbkp.php 程序代码 (Windows版)
复制代码
这些可能需要一些技术,请多多咨询谷歌或者必应。
by 北极光.Norckon
想必大家有部分人是在 VPS 上面开的 Minecraft 服务器,但是对于 Minecraft 来说地图数据简直非常重要。但是一旦数据丢了可不得了。所以呢咱就编写了一个自动上传百度云的 PHP 脚本。适合在 Linux 的服务器上运行。可以自动将数据打包上传至百度网盘。
另外值得一提的是,由于太懒就直接调用系统 shell 了,这样也可以方便改写成 shell 脚本,则可以省去 php 这样的东西了。
另外近期作成 Windows 版本请继续往下看
Linux 软件包要求:
php5 zip 以及 curl cron
Linux 版如何使用:
1、将 mcbkp.php 中的相关目录路径更换成您的相关路径。
2、请填写您的 百度API 的 AccessToken 代码。
3、为 Linux 计划任务 Cron 添加一条新计划任务。
crontab -e 范例:
0 */6 * * * php /root/mcbkp.php #每隔 6 小时自动上传 MC 数据到百度网盘
mcbkp.php 程序代码 (Linux版):
- <?php
- // MINECRAFT data backup tool
- // @ by Norckon
- date_default_timezone_set('PRC');
- // Backup filename and source path
- // BAKPATH: Where want you storage backup archive.
- // SRCPATH: Where Minecraft server installed.
- $bakpath = "/root/mcbackups";
- $srcpath = "/root/cauldron";
- // Create Zip Archive
- // SRC: Which directories want to compress
- // DST: Where storage Zip Archive
- // MAPNAME: Which map want you backup in Minecraft
- // MODE: How to backup
- // 1: Current map only
- // 2: Current map and mods
- // 3: All the server and data
- function CreateArchive($src, $dst, $mapname, $mode) {
- // Create new zip archive file
- switch($mode) {
- case 1:
- system("zip -qr $dst $src/$mapname/");
- break;
- case 2:
- system("zip -qr $dst $src/$mapname/ $src/mods/");
- break;
- case 3:
- system("zip -qr $dst $src/");
- break;
- default:
- echo "I don't known which mode you want.";
- }
- }
- // Remove older backups
- function RemoveOld ($path) {
- system("rm -f $path/mcbkp_*.mcb");
- }
- // Upload to Baidu netdisk
- function bdpcsUpload($accesstoken, $path ,$filename) {
- system('curl -k -L -F "file=@'.$path.'" "https://c.pcs.baidu.com/rest/2.0/pcs/file?method=upload&access_token='.$accesstoken.'&path=/apps/fmcbackups/'.$filename.'"');
- }
- // Main function
- function FMain() {
- global $bakpath,$srcpath;
- // Remove all older backups
- RemoveOld($bakpath);
- // Create new backup
- $bkparc = $bakpath."/mcbkp_".date("Y_m_d_H_i_s").".mcb";
- CreateArchive($srcpath, $bkparc, "world", 1);
- // Upload to baidudisk
- // 百度网盘 API 使用方法 :http://www.fcsys.us/webapp/wordpress/?p=1292
- bdpcsUpload("YOUR_ACCESS_TOKEN", $bkparc, "/mcbkp_".date("Y_m_d_H_i_s").".mcb");
- }
- FMain();
- ?>
由于 aa210063654 提供,感谢作者
- #!/bin/bash
- #debug switch -xv
- #filename : mcbk.sh
- #author : nyacat
- #settings
- #default var
- backup_path="~/mcbackups"
- server_path="~/cauldron"
- map_name="world"
- backup_mode=1
- pcs_token=""
- pcs_appid=""
- backup_name="minecraft_server_bk-"`date +%Y%m%d_%H%M%S`".zip"
- #usage
- function usage () {
- echo "Usage:"
- echo " backup mode"
- echo " $0 -m 1/2/3"
- echo " 1.backup map only"
- echo " 2.backup map and mods"
- echo " 3.backup all files"
- echo
- echo " show usage"
- echo " $0 -H"
- echo
- echo "e.g:"
- echo " $0 -m 1"
- echo
- exit 1
- }
- #root user check
- # if [[ $UID -ne 0 ]];
- # then
- # echo "Please run $0 as root."
- # exit 2
- # fi
- #usage check
- if [[ -z "$1" ]] || [[ -z "$2" ]] || [ $2 -gt 3 ] || [[ "$1" = "-H" ]]
- then
- usage
- fi
- #first,remove older backups
- rm -f ${backup_path}"/minecraft_server_bk*.zip"
- #second,create archive
- while getopts "m:H" opts
- do
- case ${opts} in
- m)
- backup_mode=${OPTARG}
- ;;
- H)
- usage
- ;;
- ?)
- usage
- ;;
- *)
- usage
- ;;
- esac
- done
- case ${backup_mode} in
- 1)
- backup_name="minecraft_server_bk-"`date +%Y%m%d_%H%M%S`"-map.zip"
- server_path=${server_path}"/"${map_name}
- ;;
- 2)
- backup_name="minecraft_server_bk-"`date +%Y%m%d_%H%M%S`"-map_mods.zip"
- server_path=${server_path}"/"${map_name}" "${server_path}"/mods"
- ;;
- 3)
- server_path="minecraft_server_bk-"`date +%Y%m%d_%H%M%S`"-all.zip"
- ;;
- *)
- usage
- ;;
- esac
- if [ -d "$server_path" ]; then
- zip -q -r ${backup_path}"/"${backup_name} ${server_path}
- else
- echo "no such dir"
- fi
- #upload to pcs
- if [ -a "${backup_path}"/"${backup_name}" ]&&[ -s "${backup_path}"/"${backup_name}" ]; then
- curl -k -L -F 'file=@'${backup_path}"/"${backup_name} 'https://c.pcs.baidu.com/rest/2.0/pcs/file?method=upload&access_token='$pcs_token'&path=/apps/'$pcs_appid'/'$backup_name
- else
- echo "no such file"
- fi

Windows 版如何使用
1、将压缩包里面的 mcbkp 文件夹与 mcbkp.php 解压到 C 盘根目录
2、在系统中添加环境变量 (见附件中的图)
3、修改 mcbkp.php 中的相关参数,请使用 utf-8 编辑器如 notepad++
4、在控制面板中添加一项计划任务(见附件中的图)
5、下载地址:http://pan.baidu.com/s/1pJt1Ps3
mcbkp.php 程序代码 (Windows版)
- <?php
- // MINECRAFT 数据备份工具
- // @ by Norckon
- date_default_timezone_set('PRC');
- // 【请先设置】备份文件路径与MC服务器路径设置等相关设置
- // BAKPATH: 你想在何处存储备份文件
- // SRCPATH: MC服务器被安装在何处
- // GMAP : 你所要备份的地图
- // GMODE : 备份模式参照下面的说明
- // GTOKEN : 百度开发者的 ACCESS TOKEN
- // GAPPID : 你的PCS的的应用名称,即网盘apps文件夹中的文件夹名
- $bakpath = "C:\\mcbkp";
- $srcpath = "C:\\cauldron";
- $gmap = "world";
- $gmode = 1;
- $gtoken = "你的ACCESSTOKEN";
- $gappid = "你的PCS的的应用名称";
- // 百度网盘 API 使用方法 :http://www.fcsys.us/webapp/wordpress/?p=1292
- // 创建压缩档案
- // SRC: 想要压缩哪一些目录
- // DST: 何处存储压缩档
- // MAPNAME: 想要备份MC服务器中的哪一张地图
- // MODE: 怎么备份
- // 1: 只备份该地图
- // 2: 备份地图与MOD
- // 3: 备份所有服务器文件
- function CreateArchive($src, $dst, $mapname, $mode) {
- // Create new zip archive file
- switch($mode) {
- case 1:
- system("zip -qr $dst $src/$mapname/");
- break;
- case 2:
- system("zip -qr $dst $src/$mapname/ $src/mods/");
- break;
- case 3:
- system("zip -qr $dst $src/");
- break;
- default:
- echo "I don't known which mode you want.";
- }
- }
- // 删除陈旧备份
- function RemoveOld ($path) {
- system("del /f /s /q $path\\mcbkp_*.mcbw");
- }
- // 上传至百度网盘
- function bdpcsUpload($accesstoken, $path ,$appname ,$filename) {
- system('curl -# -k -L -F "file=@'.$path.'" "https://c.pcs.baidu.com/rest/2.0/pcs/file?method=upload&access_token='.$accesstoken.'&path=/apps/'.$appname.'/'.$filename.'"');
- }
- // Main function
- function FMain() {
- global $bakpath,$srcpath,$gmap,$gmode,$gtoken,$gappid;
- // Remove all older backups
- RemoveOld($bakpath);
- // Create new backup
- $bkparc = $bakpath."\\mcbkp_".date("Y_m_d_H_i_s").".mcbw";
- CreateArchive($srcpath, $bkparc, $gmap, $gmaode);
- // Upload to baidudisk
- bdpcsUpload($gtoken, $bkparc, $gappid, "/mcbkp_".date("Y_m_d_H_i_s").".mcbw");
- }
- FMain();
- ?>
这些可能需要一些技术,请多多咨询谷歌或者必应。
by 北极光.Norckon
话说我没用过Linux,不知道怎么用。。
对程序一概不通~~~
O.O 只能围观。。不懂