diff --git a/backup_foundry.sh b/backup_foundry.sh new file mode 100644 index 0000000..8a6ba7e --- /dev/null +++ b/backup_foundry.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +#add more paths for different foundry instances +instances=( + "/home/ubuntu/foundryuserdata-joseph|foundry-joseph" +) + +BACKUP_ROOT="/home/ubuntu/backups" +RCLONE_REMOTE="googledrive:FoundryBackups" +RETENTION_DAYS_LOCAL=7 +RETENTION_DAYS_REMOTE=30 + +DATE=$(date +%Y-%m-%d_%H%M) + +for ENTRY in "${instances[@]}"; do + + SOURCE_DIR="${ENTRY%%|*}" + PM2_NAME="${ENTRY##*|}" + + FOLDER_NAME=$(basename "$SOURCE_DIR") + BACKUP_DIR="$BACKUP_ROOT/$FOLDER_NAME" + FILENAME="$FOLDER_NAME-backup-$DATE.tar.gz" + + mkdir -p "$BACKUP_DIR" + + echo "Processing: $PM2_NAME (Folder: $FOLDER_NAME)" + + echo "Stopping PM2 process: $PM2_NAME..." + pm2 stop "$PM2_NAME" + + echo "Zipping files..." + tar -czf "$BACKUP_DIR/$FILENAME" -C "$SOURCE_DIR" . + TAR_EXIT_CODE=$? + + echo "Restarting PM2 process: $PM2_NAME..." + pm2 start "$PM2_NAME" + + if [ $TAR_EXIT_CODE -eq 0 ]; then + echo "Local backup successful: $FILENAME" + + echo "Uploading to Google Drive..." + rclone copy "$BACKUP_DIR/$FILENAME" "$RCLONE_REMOTE/$FOLDER_NAME" --transfers=4 --checkers=8 + + echo "Cleaning remote old files..." + rclone delete "$RCLONE_REMOTE/$FOLDER_NAME" --min-age ${RETENTION_DAYS_REMOTE}d + else + echo "BACKUP FAILED for $FOLDER_NAME " + fi + + echo "Cleaning local old files..." + find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +$RETENTION_DAYS_LOCAL -delete + +done + +echo "All backup tasks completed." diff --git a/git_save.sh b/git_save.sh new file mode 100644 index 0000000..8e79977 --- /dev/null +++ b/git_save.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +PROJECT_DIR="/home/ubuntu/foundryuserdata-joseph" +PM2_PROCESS_NAME="foundry-joseph" +DATE=$(date '+%Y-%m-%d %H:%M') + +echo "Starting Git Commit for: $PM2_PROCESS_NAME" + +echo "Stopping Foundry..." +pm2 stop "$PM2_PROCESS_NAME" + +cd "$PROJECT_DIR" || { echo "Directory not found! Exiting."; exit 1; } + +echo "Adding files..." +git add . + +echo "Committing..." +git commit -m "Snapshot: $DATE" + +echo "Pushing to Remote..." +git push origin main + +echo "Restarting Foundry..." +pm2 start "$PM2_PROCESS_NAME" + +echo "Done!"