Skip to content

Instantly share code, notes, and snippets.

@gcanales75
Last active August 29, 2015 14:24
Show Gist options
  • Select an option

  • Save gcanales75/c3477352622da0dc06c3 to your computer and use it in GitHub Desktop.

Select an option

Save gcanales75/c3477352622da0dc06c3 to your computer and use it in GitHub Desktop.
Hace respaldos (snapshots) de volumenes EBS y las mantiene por 7 días
## Variables
$nombre = "Mi_Instancia"
$fecha = Get-Date -Format "yyMMdd-HHmm"
$7dias = (Get-Date).addhours(-165)
$instancia = Get-EC2Instance | select -expandproperty RunningInstance | ? {$_.Tag.Key -eq "Name" -and $_.Tag.Value -eq $nombre}
$id = $instancia.InstanceId
$discos = Get-EC2Volume | Where-Object {$_.Attachment.InstanceId -eq $id}
## Loop para generar snapshots de todos los volumenes EBS attachados a la instancia
foreach( $disco in $discos ) {
$volumen = $disco.VolumeId
$description = "backup-$fecha-$nombre-$volumen"
## Snapshots a mí!!
New-EC2Snapshot -VolumeId $disco.VolumeId -Description $description
## Elimina todos los snapshots que tengan mas de 7 días (Bueno... lo que se haya definido en la variable "$7dias")
$oldsnapshots = Get-EC2Snapshot | ? {$_.VolumeId -eq $disco.VolumeId -and $_.StartTime -lt $7dias}
foreach( $oldsnapshot in $oldsnapshots ) {
Remove-EC2Snapshot -SnapshotId $oldsnapshot.SnapshotId -Force
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment