Created
April 20, 2014 10:12
-
-
Save maddiesch/11110404 to your computer and use it in GitHub Desktop.
This is the script I run when setting up a new Minecraft server.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# The name of the .jar file for the latest version. | |
MINECRAFT_LATEST="minecraft_server.1.7.9.jar" | |
# The URL for the lates version of the minecraft server | |
MINECRAFT_LATEST_LINK="https://s3.amazonaws.com/Minecraft.Download/versions/1.7.9/minecraft_server.1.7.9.jar" | |
# The screen name for the Minecraft Server | |
MINECRAFT_SCREEN_NAME="Minecraft" | |
# Setup some variables | |
pwd=$(pwd) | |
mc="$pwd/minecraft" | |
echo "Setting up Minecraft" | |
# Create the Minecraft folder if it doesn't exist | |
if [ ! -d $mc ]; then | |
echo "Creating $mc" | |
mkdir $mc | |
fi | |
cd $mc | |
# Create the .versions folder if it doesn't exist | |
versions="$mc/.versions" | |
if [ ! -d "$versions" ]; then | |
echo "Creating $versions" | |
mkdir "$versions" | |
fi | |
# Download the lates Minecraft | |
if [ ! -f "$versions/$MINECRAFT_LATEST" ]; then | |
echo "Downloading Minecraft $MINECRAFT_LATEST" | |
cd $versions | |
wget $MINECRAFT_LATEST_LINK -O $MINECRAFT_LATEST | |
cd $mc | |
else | |
echo "$MINECRAFT_LATEST already exists" | |
fi | |
cd $mc | |
# Remove current link and link latest to server.jar | |
if [ -f "$mc/server.jar" ]; then | |
rm "$mc/server.jar" | |
fi | |
ln -s "$versions/$MINECRAFT_LATEST" "$mc/server.jar" | |
# Create start.sh script | |
if [ ! -f "$mc/start.sh" ]; then | |
echo "screen -d -m -S $MINECRAFT_SCREEN_NAME java -jar server.jar -Xmx4G -Xms4G nogui" > "$mc/start.sh" | |
chmod +x "$mc/start.sh" | |
fi | |
# Create stop.sh script | |
if [ ! -f "$mc/stop.sh" ]; then | |
echo "screen -r $MINECRAFT_SCREEN_NAME -p 0 -X stuff \"stop \$(printf '\r')\"" > "$mc/stop.sh" | |
chmod +x "$mc/stop.sh" | |
fi | |
# Create backup.sh script | |
if [ ! -f "$mc/backup.sh" ]; then | |
echo " | |
screen -r $MINECRAFT_SCREEN_NAME -p 0 -X stuff \"say Performing backup \$(printf '\r')\" | |
screen -r $MINECRAFT_SCREEN_NAME -p 0 -X stuff \"save-off \$(printf '\r')\" | |
screen -r $MINECRAFT_SCREEN_NAME -p 0 -X stuff \"save-all \$(printf '\r')\" | |
sleep 3 | |
# Backup | |
backups=\"$mc/../backups\" | |
if [ ! -d \$backups ]; then | |
mkdir \$backups | |
fi | |
cd $mc | |
# Delete file older than 5 days | |
find \$backups/*.tar.gz -mtime +5 -exec rm {} \; | |
NOW=$(date +"%Y-%m-%d") | |
tar -cpvzf \$backups/minecraft-\$NOW.tar.gz $mc --exclude='logs/*' --exclude='*.log' --exclude='.versions' | |
# Done | |
sleep 3 | |
screen -r $MINECRAFT_SCREEN_NAME -p 0 -X stuff \"save-on \$(printf '\r')\" | |
screen -r $MINECRAFT_SCREEN_NAME -p 0 -X stuff \"say Backup complete. \$(printf '\r')\" | |
" > "$mc/backup.sh" | |
chmod +x "$mc/backup.sh" | |
fi | |
echo "Done" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment