Google Cloud Platform har ett väl utbyggt api som tillåter att man programmatiskt kan göra det mesta som går att göra i plattformen, ett exempel är att ta snapshots av diskar i Compute Engine. Det fina med dessa snapshots är att dom sparas inkrementellt, det vill säga det är endast data som tillkommit eller ändrats sedan du senast tog en snapshot som sparas på disk, väldigt bra då lagring kostar pengar. Det här gör så klart snapshots väldigt lämpade för backup och jag tänkte visa ett kort script som inte bara skapar en snapshot av en disk dagligen, utan även raderar snapshots som är äldre än sju dagar.
För att scriptet ska fungera måste du ha installerat gcloud compute samt vara autentiserad mot Google Compute Engine, guide för detta finns här.
#!/bin/bash # Environments export PATH=/root/google-cloud-sdk/bin:$PATH # Daily create snapshot for "backup_path" listed disks # And remove snapshot 1 week old before # Create snap date export DT=`date +%Y%m%d` # Delete snap date export DT2=`date -d'-1 week' +%Y%m%d` # ex: ( "disk1 asia-east1-b" "disk2 asia-east1-a" ...) backup_path=( "bigenius-se-var-01 europe-west1-c" ) for txt in "${backup_path[@]}" do export name=`echo $txt | awk '{print $1}'` export zone=`echo $txt | awk '{print $2}'` sync gcloud compute disks snapshot $name --snapshot-name snap-$name-v$DT --zone $zone gcloud compute snapshots delete snap-$name-v$DT2 -q done
I det här fallet skapas en snapshot för min disk som heter bigenius-se-var-01 och finns i regionen europe-west1-c. Det går så klart att ta en snapshot på fler än en disk åt gången, se exemplet i scriptet.
Se till att export PATH innehåller den sökväg där gcloud compute är installerat.
Nu är det bara att köra scriptet dagligen via crontab, guide för crontab finns här.
När scriptet har körts minst en gång kan du se dina snapshots i Google Developers Console under Compute / Compute Engine / Snapshots
Dessa snapshots kan så klart användas för att skapa nya diskar, som sedan kan monteras under nya eller befintliga instanser.