Advertisement
kerbo_

vintagestory_backup.sh

Feb 21st, 2025
448
1
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.13 KB | None | 1 0
  1. #!/bin/bash
  2.  
  3. # Colors
  4. RED="\e[0;91m"
  5. GREEN="\e[0;92m"
  6. YELLOW="\e[0;93m"
  7. NC="\e[0m"
  8.  
  9. # CHANGE ME
  10. saveDir="/home/kerbo/.config/VintagestoryData/Saves"
  11. backupDir="/data/backup/savegames/Vintage Story"
  12.  
  13. maxSaves=10
  14. dateString=$(date +"%Y-%m-%d_%H-%M")
  15.  
  16. if [[ ! -d "$backupDir" ]]; then
  17.     mkdir "$backupDir"
  18.     if [[ ! -d "$backupDir" ]]; then
  19.         echo "Error creating backup directory: $backupDir"
  20.         exit 1
  21.     fi
  22. fi
  23.  
  24. cd "$saveDir" || exit 1
  25.  
  26. saves=(*.vcdbs)
  27.  
  28. for save in "${saves[@]}"; do
  29.     if [[ ! "$save" =~ "_auto" && -f "$save" ]]; then
  30.         echo -e "${YELLOW}Checking hash:${NC} ${save}"
  31.         save_hash=$(md5sum "$save" | cut -d' ' -f1)
  32.         backup_file=$(ls "${backupDir}" | grep "${save}-" 2>/dev/null | tail -n1)
  33.         if [[ -n "$backup_file" ]]; then
  34.             backup="${backupDir}/${backup_file}"
  35.         else
  36.             backup=""
  37.         fi
  38.         backup_hash=""
  39.        
  40.         if [[ -n "$backup" ]]; then
  41.             echo -e "${YELLOW}Checking hash:${NC} $(basename "${backup}")"
  42.             backup_hash=$(md5sum "$backup" | cut -d' ' -f1)        
  43.         fi
  44.        
  45.         #echo save: $save
  46.         #echo backup: $backup
  47.         #echo save_hash: $save_hash
  48.         #echo backup_hash: $backup_hash
  49.        
  50.         if [[ "$backup_hash" == "$save_hash" ]]; then
  51.             echo -e "${GREEN}$save matches latest backup, no backup needed${NC}"
  52.         else
  53.             cp "$save" "${backupDir}/${save}-${dateString}"
  54.             RET=$?
  55.             if [[ $RET -eq 0 ]]; then
  56.                 echo -e "${YELLOW}Copied $save to ${backupDir}/${save}-${dateString}${NC}"
  57.             else
  58.                 echo -e "${RED}Error! cp returned $RET for $save${NC}"
  59.             fi
  60.         fi
  61.  
  62.         count=$(ls "${backupDir}" | grep -c "${save}-")
  63.         if [[ $count -gt $maxSaves ]]; then
  64.             let trim=($count - $maxSaves)
  65.             if [[ $trim -gt 0 ]]; then
  66.                 echo "Cleaning up $trim old backups for $save"
  67.                 ls "${backupDir}" | grep "${save}-" | tail -n $trim | xargs -I SAVE rm "${backupDir}/SAVE"
  68.             fi
  69.         fi
  70.     fi
  71. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement