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="/home/kerbo/.config/VintagestoryData/Saves"
- backupDir="/data/backup/savegames/Vintage Story"
- maxSaves=10
- dateString=$(date +"%Y-%m-%d_%H-%M")
- 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=(*.vcdbs)
- for save in "${saves[@]}"; do
- if [[ ! "$save" =~ "_auto" && -f "$save" ]]; then
- echo -e "${YELLOW}Checking hash:${NC} ${save}"
- save_hash=$(md5sum "$save" | 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
- echo -e "${YELLOW}Checking hash:${NC} $(basename "${backup}")"
- backup_hash=$(md5sum "$backup" | cut -d' ' -f1)
- 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
- cp "$save" "${backupDir}/${save}-${dateString}"
- RET=$?
- if [[ $RET -eq 0 ]]; then
- echo -e "${YELLOW}Copied $save to ${backupDir}/${save}-${dateString}${NC}"
- else
- echo -e "${RED}Error! cp 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}-" | tail -n $trim | xargs -I SAVE rm "${backupDir}/SAVE"
- fi
- fi
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement