我在Amazon EC2上托管了一些
Windows服务器.一些运行Windows Server 2003,另一些运行Windows Server 2008.这些是EBS支持的实例.大多数实例还附加了一些额外的EBS卷.
我们希望将Windows机器(以及附加的EBS卷)的每日快照安排到S3,以便我们可以进行每日备份.
人们会认为这是一个非常常见的要求,并且可以通过AWS管理控制台提供,但是,它不是.有哪些方法?如何在Windows服务器上安排每日快照?
Linux上有几个可用于在线的脚本示例,但对于Windows来说并非如此.我看过http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html以及https://github.com/ronmichael/aws-snapshot-scheduler.有没有人使用过这些方法之一并且有效吗?
我也考虑过像Skeddly这样的服务,乍看起来似乎很便宜,但是当你看到它用于几台服务器时,价格很快升级到这样一个点,在这一点上你可以创建自己的解决方案,然后你可以应用它未来的新服务器.有了Skeddly,我们将为每台服务器付费.
我们如何安排Windows实例的每日快照?
Amazon Web Services最近推出了适用于Windows的
announced PowerShell命令行工具,它与
AWS Tools for .NET SDK一起打包.
原文链接:https://www.f2er.com/windows/370098.htmlAWS Powershell工具使创建快照变得非常容易:
New-EC2Snapshot "vol-371acd04" -Description "My Snapshot"
您可以像这样查询快照:
PS C:\Program Files (x86)\AWS Tools\PowerShell> Get-EC2Snapshot | more SnapshotId : snap-18be2b28 VolumeId : vol-371acd04 Status : completed StartTime : 2012-12-28T08:17:00.000Z Progress : 100% OwnerId : 383816850479 VolumeSize : 30 Description : My Snapshot OwnerAlias : Tag : {}
确保安装了AWS Powershell工具,并创建一个计划任务,该任务使用类似于上面代码段的powershell脚本来安排快照,您应该做得很好.
已更新以查询附加的EBS卷:
要查询附加到您的实例的EBS卷,然后为每个卷创建快照,您可以执行以下操作:
# Find my instance ID from the EC2 Metadata $myInstanceID = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/Meta-data/instance-id") # Query for volumes that are attached to my Instance Id $volumes = (Get-EC2Volume).Attachment | where {$_.InstanceId -eq $myInstanceID } | Select VolumeId # Iterate through these volumes and snapshot each of them foreach ($volume in $volumes) { New-EC2Snapshot $volume.VolumeId -Description "My Snapshot" }