Here’s an example of how to restore all the disks of a GCP VM from snapshots.
#!/bin/bash # Set variables PROJECT_ID="your-project-id" INSTANCE_NAME="your-instance-name" # Get list of disks attached to the instance DISKS=$(gcloud compute instances describe ${INSTANCE_NAME} \ --project ${PROJECT_ID} \ --format="value(disks.deviceName)") # Loop through each disk and restore from most recent snapshot for DISK in $DISKS do # Get most recent snapshot for the disk SNAPSHOT=$(gcloud compute snapshots list \ --project ${PROJECT_ID} \ --filter="sourceDisk=${INSTANCE_NAME}/${DISK} AND status=READY" \ --sort-by="~creationTimestamp" \ --format="value(name)" | head -n 1) # Restore the disk from the snapshot gcloud compute disks create ${DISK} \ --project ${PROJECT_ID} \ --source-snapshot ${SNAPSHOT} \ --zone=us-central1-a \ --labels restored-from=${SNAPSHOT} # Attach the disk to the instance gcloud compute instances attach-disk ${INSTANCE_NAME} \ --disk=${DISK} \ --project ${PROJECT_ID} \ --zone=us-central1-a done |