Auto snapshot GCE disks
10K+
This is a Docker / Kubernetes ready bash script to to automatically snapshot Google Compute Engine disks in a Google cloud project.
Google snapshots are incremental, and don't need to be deleted. If you delete an earlier snapshot the block are automatically migrated to the later snapshot. So deleting snapshots does not save space, but for convenience, rather than an infinitely long list, it is useful to purge earlier snapshots assuming that you would never need granularity. This script will default to 60 days. You can change this behavior with the environment variable DAYS_RETENTION.
For a more detailed description of what the commands do please visit http://badlywired.com/google-compute-engine-snapshot-automation/
Much of the inspiration for this script came from http://stackoverflow.com/questions/27418427/how-to-create-and-rotate-automatic-snapshot and much of the installation instructions from here https://github.com/jacksegal/google-compute-snapshot
google-cloud-auto-snapshot.sh will:
DISK_FILTER.autogcs-{DISK_NAME-YYYY-MM-DD-sssssssss}.DAYS_RETENTION.You must create a function (in section IAM & administration) with the next permissions:
Documentation in progress.
Documentation in progress.
Install the script (the script doesn't even have to run on Google Compute Engine instance, any linux machine will work).
Install Script: Download the latest version of the snapshot script and make it executable, e.g.
sudo mkdir -p /opt/google-cloud-auto-snapshot
sudo wget -P /opt/google-cloud-auto-snapshot/ https://raw.githubusercontent.com/GeographicaGS/google-cloud-auto-snapshot/master/google-cloud-auto-snapshot.sh
Setup CRON: You should then setup a cron job (crontab -e) in order to schedule a snapshot as often as you like, e.g. for daily cron:
0 5 * * * root /opt/google-cloud-auto-snapshot/google-cloud-auto-snapshot.sh >> /var/log/cron/snapshot.log 2>&1
Manage CRON Output: Ideally you should then create a directory for all cron outputs and add it to logrotate:
sudo mkdir /var/log/cron
sudo touch /var/log/cron/snapshot.log
sudo chgrp adm /var/log/cron/snapshot.log
sudo chmod 664 /var/log/cron/snapshot.log
sudo nano /etc/logrotate.d/cron
/var/log/cron/*.log {
daily
missingok
rotate 14
compress
notifempty
create 664 root adm
sharedscripts
}
To manually test the script:
/opt/google-cloud-auto-snapshot/google-cloud-auto-snapshot.sh
autogcs- )Content type
Image
Digest
sha256:aae08adc0…
Size
252.5 MB
Last updated
almost 3 years ago
docker pull geographica/google-cloud-auto-snapshot