-
Notifications
You must be signed in to change notification settings - Fork 0
/
Backup_Azure_Blob.ps1
40 lines (37 loc) · 1.64 KB
/
Backup_Azure_Blob.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
## Script copies Azure Blob Container to onPrem and sends a result mail.
## old AzCopy logs and plans will be deletet --> $delOlderDays
## $source must include a valid SAS Token with BLOB RW rights
## AzCopy must exist / download it from Microsoft
## Guido Jeuken
## Version 1.1
## 2020-8-12
## configure your values
$AzCopyPath = "c:\temp\azcopy.exe"
$source="https://yourstorage.blob.core.windows.net/yourContainer-Name?YourSAS-Key"
$dest = "d:\backup\dir"
$optons = " --recursive"
## if you whant to delete files in the destination if thy have been deleted in the source, enable the next line
##$optons = $optons + " --delete-destination=true"
#Mail Server Variables
$recipients = "error@YourDomain"
$smtpServer = "YourMailServerNameOrIP"
$smtpFrom = "AzureBackup@YourDomain"
$messageSubject = "daily Backup Azure Storage Result"
##Days to keep azCopy Logs and plan-retry Infos
$delOlderDays=-3
## End variables to configure
## get default AzCopy logDirPath
$azCopyLogDir=$env:USERPROFILE + "\.azcopy"
## Execute AzCopy and store return values
$azlog = $AzCopyPath sync $source $dest --recursive
##send results as Mail
foreach($rec in $recipients){
Send-MailMessage -To $rec -From $smtpFrom -Subject $messageSubject -encoding ASCII -body $azlog.ToString() -smtpserver $smtpServer
}
##delete old Log and plan Files
$CurrDay=get-date
$DateToDelete = $CurrDay.AddDays($delOlderDays)
Get-ChildItem $azCopyLogDir | Where-Object {$_.LastwriteTime -lt $DateToDelete} | Remove-Item
## delete plan files
$azCopyLogDir =$azCopyLogDir + "\plans"
Get-ChildItem $azCopyLogDir | Where-Object {$_.LastwriteTime -lt $DateToDelete} | Remove-Item