#!/bin/bash dotnet_version='net6.0' salimax_ip="$1" username='ie-entwicklung' root_password='Salimax4x25' set -e # Define directories and configurations DEST_DIR="/home/$username/salimax/SaliMax" # Path to the specific file BACKUP_ROOT="/home/$username/salimax/salimax_backup" # Base backup directory TIMESTAMP=$(date +'%Y%m%d_%H%M%S') BACKUP_DIR="${BACKUP_ROOT}/script_backup_${TIMESTAMP}" # Backup directory with unique name MAX_BACKUPS=5 # Limit to 5 backups echo -e "\n============================ Build ============================\n" # Build the project dotnet publish \ ./SaliMax.csproj \ -p:PublishTrimmed=false \ -c Release \ -r linux-x64 echo -e "\n============================ Backup Old SaliMax File ============================\n" # SSH into the remote machine and create the backup directory ssh $username@$salimax_ip "mkdir -p $BACKUP_DIR" # Move the 'SaliMax' file to the backup folder on the remote machine ssh $username@$salimax_ip "rsync -av --exclude='${BACKUP_ROOT}/script_backup_*' --exclude='salimax_backup/*' $DEST_DIR $BACKUP_DIR/" echo -e "\n============================ Cleanup Old Backups ============================\n" # Cleanup old backups if the total number exceeds the maximum allowed echo "Existing backups:" ssh $username@$salimax_ip "ls -1d ${BACKUP_ROOT}/script_backup_* 2>/dev/null" # Count the backups created by this script BACKUP_COUNT=$(ssh $username@$salimax_ip "ls -1d ${BACKUP_ROOT}/script_backup_* 2>/dev/null | wc -l") echo "Current number of backups: $BACKUP_COUNT" if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then # Find and delete the oldest backup created by the script OLD_BACKUP=$(ssh $username@$salimax_ip "find ${BACKUP_ROOT} -type d -name 'script_backup_*' | sort | head -n 1") echo "Old backup to delete: $OLD_BACKUP" if [ -n "$OLD_BACKUP" ]; then echo "Backup limit reached. Deleting old backup: $OLD_BACKUP" ssh $username@$salimax_ip "rm -rf $OLD_BACKUP" && echo "Deleted: $OLD_BACKUP" || echo "Failed to delete: $OLD_BACKUP" else echo "No valid backups to delete." fi else echo "Backup limit not reached. Current number of backups: $BACKUP_COUNT" fi echo -e "\n============================ Deploy ============================\n" # Deploy new files to the remote destination rsync -v \ --exclude '*.pdb' \ ./bin/Release/$dotnet_version/linux-x64/publish/* \ $username@"$salimax_ip":~/salimax echo -e "\nDeployment complete!\n" #echo -e "\n============================ Execute ============================\n" #sshpass -p "$root_password" ssh -o StrictHostKeyChecking=no -t "$username"@"$salimax_ip" "echo '$root_password' | sudo -S sh -c 'cd salimax && ./restart'" 2>/dev/null