Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Colors
- RED="\e[0;91m"
- GREEN="\e[0;92m"
- YELLOW="\e[0;93m"
- NC="\e[0m"
- # CHANGE ME
- saveDir="/opt/games/steam/steamapps/common/Archean/Archean-data/server/worlds"
- backupDir="/data/backup/savegames/Archean"
- maxSaves=10
- dateString=$(date +"%Y-%m-%d_%H-%M")
- # Need zip and unzip
- if [[ -z "$(which zip 2>/dev/null)" ]]; then
- error "zip not found"
- exit 1
- fi
- if [[ -z "$(which unzip 2>/dev/null)" ]]; then
- error "unzip not found"
- exit 1
- fi
- if [[ ! -d "$backupDir" ]]; then
- mkdir "$backupDir"
- if [[ ! -d "$backupDir" ]]; then
- echo "Error creating backup directory: $backupDir"
- exit 1
- fi
- fi
- cd "$saveDir" || exit 1
- saves=(ls -d *)
- for save in "${saves[@]}"; do
- if [[ -d "$save" ]]; then
- save_hash=$(md5sum "$save/state.worldstate" | cut -d' ' -f1)
- backup_file=$(ls "${backupDir}" | grep "${save}-" 2>/dev/null | tail -n1)
- if [[ -n "$backup_file" ]]; then
- backup="${backupDir}/${backup_file}"
- else
- backup=""
- fi
- backup_hash=""
- if [[ -n "$backup" ]]; then
- tempDir=$(mktemp -d)
- if [[ -d "$tempDir" ]]; then
- unzip "$backup" -d $tempDir >/dev/null
- backup_hash=$(md5sum "${tempDir}/${save}/state.worldstate" | cut -d' ' -f1)
- rm -rf "$tempDir"
- fi
- fi
- #echo save: $save
- #echo backup: $backup
- #echo save_hash: $save_hash
- #echo backup_hash: $backup_hash
- if [[ "$backup_hash" == "$save_hash" ]]; then
- echo -e "${GREEN}$save matches latest backup, no backup needed${NC}"
- else
- zip -r "${backupDir}/${save}-${dateString}.zip" "$save" >/dev/null
- RET=$?
- if [[ $RET -eq 0 ]]; then
- echo -e "${YELLOW}Zipped $save to ${backupDir}/${save}-${dateString}.zip${NC}"
- else
- echo -e "${RED}Error! zip returned $RET for $save${NC}"
- fi
- fi
- count=$(ls "${backupDir}" | grep -c "${save}-")
- if [[ $count -gt $maxSaves ]]; then
- let trim=($count - $maxSaves)
- if [[ $trim -gt 0 ]]; then
- echo "Cleaning up $trim old backups for $save"
- ls "${backupDir}" | grep "${save}-" | head -n $trim | xargs -I SAVE rm "${backupDir}/SAVE"
- fi
- fi
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement