Skip to content

Instantly share code, notes, and snippets.

@yaasita
Created August 5, 2019 04:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yaasita/352da6d010e3bae4b3b9e043101eec74 to your computer and use it in GitHub Desktop.
Save yaasita/352da6d010e3bae4b3b9e043101eec74 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use strict;
use warnings;
use feature qw(say);
use JSON qw/decode_json/;
### Initial Settings ###
my $ZONE = shift;
my $TARGET_DISK = shift;
my $SAVE_NUMBER = shift;
########################
{
use Time::Piece;
use Time::Seconds;
my $t = localtime;
my $today = $t->strftime("%Y%m%d%H%M");
system ("gcloud compute disks snapshot $TARGET_DISK --zone $ZONE --snapshot-names=$TARGET_DISK-$today") and die $!;
}
my $json_in = `gcloud --format=json compute snapshots list`;
my $data = decode_json($json_in);
my $i=0;
for (reverse sort @{$data}){
my $d = $_;
next unless $d->{sourceDisk} =~ /\/$TARGET_DISK$/;
$i++;
if ($i > $SAVE_NUMBER){
say $d->{"name"} . " => delete";
system ("gcloud compute snapshots delete $d->{name} -q") and die $!;
}
else {
say $d->{"name"} . " => save";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment