Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save adriantunez/6a91beb032ed96fbfe7dc2782a8c80bf to your computer and use it in GitHub Desktop.

Select an option

Save adriantunez/6a91beb032ed96fbfe7dc2782a8c80bf to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
FIRST_SNAPSHOT=$1
SECOND_SNAPSHOT=$2
if [ -z "$FIRST_SNAPSHOT" ] || [ -z "$SECOND_SNAPSHOT" ]; then
echo "Usage: $0 <first-snapshot-id> <second-snapshot-id>"
exit 1
fi
echo "Comparing snapshots:"
echo "FROM: $FIRST_SNAPSHOT"
echo "TO: $SECOND_SNAPSHOT"
echo
TOKEN=""
BLOCKS=0
while : ; do
if [ -z "$TOKEN" ]; then
RESP=$(aws ebs list-changed-blocks \
--first-snapshot-id $FIRST_SNAPSHOT \
--second-snapshot-id $SECOND_SNAPSHOT)
else
RESP=$(aws ebs list-changed-blocks \
--first-snapshot-id $FIRST_SNAPSHOT \
--second-snapshot-id $SECOND_SNAPSHOT \
--next-token $TOKEN)
fi
COUNT=$(echo "$RESP" | jq '.ChangedBlocks | length')
BLOCKS=$((BLOCKS + COUNT))
TOKEN=$(echo "$RESP" | jq -r '.NextToken')
if [ "$TOKEN" == "null" ]; then
break
fi
done
# Each block = 512 KiB
SIZE_KB=$((BLOCKS * 512))
SIZE_MB=$(echo "$SIZE_KB / 1024" | bc)
SIZE_GB=$(echo "scale=2; $SIZE_MB / 1024" | bc)
echo "Changed blocks: $BLOCKS"
echo "Incremental size:"
echo " ${SIZE_KB} KB"
echo " ${SIZE_MB} MB"
echo " ${SIZE_GB} GB"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment