Azure Automation (2) 定期删除存储账号中的文件

  《Windows Azure Platform 系列文章目录

  本文介绍的是国内由世纪互联运维的Azure China。

  本文是对笔者之前的文档Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage进行的补充。  

  希望笔者先阅读Azure Automation (1) 入门,对Azure Automation有基本的概念认识。

  需求:

  在之前的文档中Azure Backup (1) 将SQL Server 2012虚拟机中数据库备份到Azure Storage

  笔者介绍了使用SQL Server Job将SQL Database的备份文件bak备份到Azure Storage存储账户中。

  但是这样会产生一个问题,随着这个SQL Job运行的时间越来越长,数据库备份文件bak会越来越多。如何设置Azure Automation计划任务,把老的数据库备份文件定期删除呢?

  在这里笔者详细介绍一下相关的内容。

  本文提到的技术细节有几点:

  1.Azure AD账户,请参考:Windows Azure Active Directory (3) China Azure AD增加新用户

  2.Azure订阅,请参考:Azure PowerShell (4) 使用PowerShell管理多个订阅

  3.Azure存储账户名称,请参考:Windows Azure Storage (1) Windows Azure Storage Service存储服务

  4.Azure存储账户container,请参考:

   Windows Azure Storage (2) Windows Azure Storage Service存储服务之Blob详解(上)

       Windows Azure Storage (3) Windows Azure Storage Service存储服务之Blob详解(中)

       Windows Azure Storage (4) Windows Azure Storage Service存储服务之Blob Share Access Signature

 

  本文的内容分为2个部分:

  1.创建协同管理员Co-admin

  2.定期删除存储账号的Runbook的编写

  2.计划任务的调用

 

  我们开始第一部分的内容

  1.首先我们根据之前的内容,Windows Azure Active Directory (3) China Azure AD增加新用户,我们增加一个协同管理员Co-Admin

  

  设置这个共同管理员的目的是,这个Azure AD账户([email protected]leizha.partner.onmschina.cn)只是用来运行Azure Automation,没有其他的权限。

  newuser@leizha.partner.onmschina.cn在运行Azure Automation的时候,需要验证newuser的账户和密码

  

  如果我们设置服务管理员[email protected]来运行Azure Automation的话,

  默认的Azure AD密码过期时间是60天,如果超过60天我们将admin账户密码修改,会在验证密码的时候出错。

  所以我们需要单独一个Azure AD账户来运行Azure Automation。

  为了保证Demo的可读性,我们创建一个单独的Azure AD账户[email protected]

  2.我们创建一个Automation命令为LeiAutomation。点击该Automation,如下图:

  

  3.页面跳转,我们点击RUNBOOKS,然后点击 IMPORT,如下图。

  

  

  同时导入Runbook。Runbook的下载地址:http://files.cnblogs.com/files/threestone/RemoveStorageBlobXDaysOld.rar

  请注意在导入之前修改相应的参数,如下面的方框内容:

                #设置Org ID
                [parameter(Mandatory=$true)]
                [String]$AzureOrgId="[YourAzureOrgID]",

                #设置Org ID的密码
                [Parameter(Mandatory = $true)]
                [String]$Password="[YourAzureOrgIDPassword]",

                #设置订阅名称
                [Parameter(Mandatory = $true)]
                [String]$AzureSubscriptionName="[YourSubscriptionName]",

                #设置存储账号
                [Parameter(Mandatory = $true)]
                [String]$StorageAccountName="[YourStorageAccount]",

                #设置Container Name
                [Parameter(Mandatory = $true)]
                [String]$ContainerName="[YourStorageAccountContainerName]",

                #设置过期时间
                [Parameter(Mandatory = $true)]
                [Int32]$DaysOld=[XDaysOld]

  这样可以把某个存储账号下超过XDaysOld的旧数据删除,注意$DaysOld这个参数类型是Int32,赋值的参数不包含双引号。

  4.修改参数完毕后,我们可以导入该RunBook。如下图:

  

  5.导入完毕后,我们就可以查看到该RunBook

  

  6.这里有重要的事情强调三遍:

  Azure Automation RunBook的系统时间为UTC时区

  Azure Automation RunBook的系统时间为UTC时区

  Azure Automation RunBook的系统时间为UTC时区

  我们的Automation RunBook的系统时间为UTC时区,我们需要修改为UTC时区为UTC+8北京时间 

  $ChinaTimeZone = [System.TimeZoneInfo]::FindSystemTimeZoneByID("China Standard Time")
  $Start = [System.TimeZoneInfo]::ConvertTimefromUTC((get-date).ToUniversalTime(),$ChinaTimeZone)
  "Starting: " + $Start.ToString("HH:mm:ss.ffffzzz")

  7.记得导入Azure Automation RunBook之后,需要Publish这个RunBook

  

  8.Publish之后,我们就可以在PUBLISHED里面看到发布的RUNBOOK项目

  9.执行成功后,我们可以在Schedule里面设置计划任务。我们创建一个新的计划任务,选择LINK TO A NEW Schedule,如下图:

  

  10.首先命名这个Schedule(计划任务)

  

  

  11.然后设置计划任务频率。如下图:

  

  我们设置Daily每天运行一次,开始时间为2015-08-28早上11点。

  这里有重要的事情强调三遍:

  Azure Automation Schedule的系统时间为UTC+8时区,是北京时间

  Azure Automation Schedule的系统时间为UTC+8时区,是北京时间

  Azure Automation Schedule的系统时间为UTC+8时区,是北京时间

  

  12.最后设置这个RunBook的参数,图略。

  这样我们就设计了计划任务,从2015-08-28上午11点开始执行Azure Automation,每天执行一次,没有过期时间。

  这样Schedule(计划任务)每天就会清除Azure Storage Account的老旧数据。

  

时间: 2024-10-08 00:29:22

Azure Automation (2) 定期删除存储账号中的文件的相关文章

【菜鸟学Linux】Cron Job定期删除Log(日志)文件

以前一直做Windows开发,近期的项目中要求使用Linux.作为小菜鸟一枚,赶紧买了一本经典书<鸟哥的Linux私房菜>学习.最近刚好有一个小任务 - 由于产品产生的Log很多,而且增长很快,所以需要用脚本(Bash scripts)删除过期的Log文件. 使用Linux下的Cron Job可以很好的解决这个问题. 什么是Cron Job? 建立Cron Job需要用到命令crontab,维基百科定义:crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.

Win10正式版删除此电脑中的文件夹

Win10正式版如何删除"此电脑"中冗余的6个文件夹 将以下代码保存为123.bat文件,用管理员权限运行,选择显示或隐藏 _____________________________________________________________ @echo off set /P aa="隐藏此电脑中的文件夹请按1,按其它任意键则显示." if /i %aa%==1 ( set sss=Hide ) else ( set sss=show ) echo y | re

git删除远程分支中的文件

一开始没有把git项目中的.classpath加入到.gitignore中,导致远程分支中一直存在这个文件,这样在其他机器上执行git pull时,会导致本地的.classpath被破坏,而使得这个项目的引用出现问题.由此,我们需要把远程分支中的.classpath文件删除. 1. 一种想法是把.classpath文件加入到gitignore中,这样在下次提交的时候就不会提交.classpath文件,但是这种做法并不会使得远程分支中的.classpath文件被删除. 2. 下面有比较挫的方法来解

整理删除Git仓库中的文件

第一步 : 首先切换到master分支下     $  git checkout master 第二步 : 将远程仓库中的文件拉取下来     $ git pull origin master 第三步 : 查看master分之下的文件        $ dir 第四步 : 删除文件            $ git rm -r --cached 文件名 第五步 : 提交操作          $ git commit -m '描述' 第六步: 更新master分支      $ git push

gradle 删除指定目录中的文件和目录

// 删除bakAPk下的所有非母包文件 task deleTask(type: Delete){ FileTree tree = fileTree(dir: bakPath) tree.each {File file -> if(!file.toString().contains(oldFileName)){ delete file } } } deleTask // 删除bakAPk目录下的所有非母包的目录和文件 task clearBacApkDir(type: Delete) { fil

【Azure】ASM虚拟机迁移到ARM中

这两天开始讲之前在老门户(ASM)中的虚拟机往新门户(ARM)中进行迁移,阅读了很多博主的文章和微软云网站的介绍,在下使用微软云官网介绍的迁移工具进行迁移. 在开始迁移体验之前,了解一下整个迁移的流程,总共分四步: 验证:是在后台对进行迁移的资源执行数据分析,并在资源能够进行迁移时返回成功/失败 准备:是要模拟将 IaaS 资源从经典资源转换为 Resource Manager 资源的过程,并以并排方式让此转换过程直观可见. 检查:登录到门户并抽查属性和资源,来验证元数据的迁移是否正常. 提交/

如何创建/修改远程仓库 + 如何删除远程仓库 + 如何删除远程仓库中的某个文件或文件夹 + 如何使用git将本地仓库连接到多个远程仓库

首先我们来区分一些概念.术语.名词.不然脑子一锅粥,总是晕!!!博主对此深有体会!从中学到了没事要多总结.多归类! 仓库有本地仓库和远程仓库之分.仓库都可以叫做服务端(器).本地仓库有:Windows.Linux.MacOS.(指的是运行在不同系统下的本地仓库)远程仓库有:GiuHub(国外).Gitee码云(国内).Coding(国内)等等.(说白了就是服务器)那么服务端可以分为:本地服务端(器).远程服务端(器).连接仓库的方式有:https.SSH等等.连接仓库的客户端软件(工具)有:Gi

intllij IDE 中git ignore 无法删除target目录下的文件

原因: git的本地忽略设置必须保证git的远程仓库分支上没有这个要忽略的文件,如果远程分支上存在这个文件,本地在设置ignore 这个文件,将会失败,无法commit忽略.(有人说是git的bug,本人猜测是git并没有考虑到这个需求) 我的解决办法,在本地删除targe目录中的文件,然后提交到远程分支,就可以了. ------------------------------------------------------- 关于.idea的文件夹中的workspace.xml设置ignore

使用Python boto3上传Windows EC2实例中的文件至S3存储桶中

一.创建终端节点 为什么要创建终端节点,把VPC和S3管理起来呢?如果不将VPC和S3通过终端节点管理起来,那么VPC中EC2实例访问S3存储桶是通过公共网络的:一旦关联起来,那么VPC中EC2实例访问S3存储桶走的就是内部网络.好处有两个:1. 走内部网络就不会产生流量费用:2. 走内部网络速度快,不会因为网络原因导致我们的Python脚本产生异常. VPC->终端节点->创建终端节点->将VPC和S3关联->关联子网 二.在Windows中安装Python3编译器以及boto3