MOVE FAST. MAKE THINGS.

TIMOTHY MCGUCKIN

Multipass: backup instances, reinstall and restore instances (MacOS and Ubuntu)

Below are two scripts to automate the process of removing, backing up, reinstalling, and replacing Multipass instances on macOS and Ubuntu Each script is designed to be run from the terminal on the respective operating system.

Script for macOS

This script removes Multipass, backs up instances, reinstalls Multipass via Homebrew, and restores backed-up instances. #macos

file: multipass_reinstall_preserve_instances.sh
#!/bin/bash
# Function to backup all Multipass instances
backup_instances() {
    echo "Backing up Multipass instances..."
    instances=$(multipass list --format csv | tail -n +2 | cut -d ',' -f1)
    if [ -z "$instances" ]; then
        echo "No instances found."
    else
        mkdir -p ~/multipass_backup
        for instance in $instances; do
            echo "Backing up instance: $instance"
            multipass exec $instance -- tar czf /home/ubuntu/$instance-backup.tar.gz /home/ubuntu/
            multipass transfer $instance:/home/ubuntu/$instance-backup.tar.gz ~/multipass_backup/
            echo "Backup for $instance completed."
        done
    fi
}
# Function to uninstall Multipass
uninstall_multipass() {
    echo "Uninstalling Multipass..."
    brew uninstall multipass
}
# Function to reinstall Multipass
reinstall_multipass() {
    echo "Reinstalling Multipass..."
    brew install --cask multipass
}
# Function to restore Multipass instances
restore_instances() {
    echo "Restoring Multipass instances..."
    mkdir -p ~/multipass_backup
    for backup in ~/multipass_backup/*-backup.tar.gz; do
        instance_name=$(basename $backup -backup.tar.gz)
        echo "Launching new instance: $instance_name"
        multipass launch --name $instance_name
        echo "Restoring backup to $instance_name"
        multipass transfer $backup $instance_name:/home/ubuntu/
        multipass exec $instance_name -- tar xzf /home/ubuntu/$(basename $backup) -C /home/ubuntu/
        echo "Restoration completed for $instance_name."
    done
}
# Main process
backup_instances
uninstall_multipass
reinstall_multipass
restore_instances
echo "Multipass reinstallation and instance restoration completed!"

Script for Ubuntu

This script is for Ubuntu users who want to follow a similar process with Snap as the installation method.
#ubuntu

file: multipass_reinstall_ubuntu.sh

#!/bin/bash

# Function to backup all Multipass instances
backup_instances() {
    echo "Backing up Multipass instances..."
    instances=$(multipass list --format csv | tail -n +2 | cut -d ',' -f1)
    
    if [ -z "$instances" ]; then
        echo "No instances found."
    else
        mkdir -p ~/multipass_backup
        for instance in $instances; do
            echo "Backing up instance: $instance"
            multipass exec $instance -- tar czf /home/ubuntu/$instance-backup.tar.gz /home/ubuntu/
            multipass transfer $instance:/home/ubuntu/$instance-backup.tar.gz ~/multipass_backup/
            echo "Backup for $instance completed."
        done
    fi
}

# Function to uninstall Multipass
uninstall_multipass() {
    echo "Uninstalling Multipass..."
    sudo snap remove multipass
}

# Function to reinstall Multipass
reinstall_multipass() {
    echo "Reinstalling Multipass..."
    sudo snap install multipass
}

# Function to restore Multipass instances
restore_instances() {
    echo "Restoring Multipass instances..."
    mkdir -p ~/multipass_backup
    for backup in ~/multipass_backup/*-backup.tar.gz; do
        instance_name=$(basename $backup -backup.tar.gz)
        echo "Launching new instance: $instance_name"
        multipass launch --name $instance_name
        
        echo "Restoring backup to $instance_name"
        multipass transfer $backup $instance_name:/home/ubuntu/
        multipass exec $instance_name -- tar xzf /home/ubuntu/$(basename $backup) -C /home/ubuntu/
        echo "Restoration completed for $instance_name."
    done
}

# Main process
backup_instances
uninstall_multipass
reinstall_multipass
restore_instances

echo "Multipass reinstallation and instance restoration completed!"

How to Run the Script

1. **Save the script:**

- For macOS: Save the script as `multipass_reinstall_macos.sh`.

- For Ubuntu: Save the script as `multipass_reinstall_ubuntu.sh`.

2. **Make the script executable:**

Run the following command to make the script executable:

   chmod +x <script_name>.sh

Example:

   chmod +x multipass_reinstall_macos.sh
3. Run the script:

Execute the script by running:

   ./multipass_reinstall_macos.sh  # For macOS
   ./multipass_reinstall_ubuntu.sh  # For Ubuntu
These scripts will automatically handle the backup, uninstallation, reinstallation, and restoration of Multipass instances. Let me know if you need any further customization or assistance with the scripts!

Sign up today.