Create Archive for VM Backup with Powershell

หลังจากที่เราได้ทำ VM Backup ไป  เราจะมาทำ Archive เพื่อเก็บเป็นไฟล์ต้นฉบับ เวลาเกิดเหตุการณ์ถูกโจมตี โดยเฉพาะ VM ที่เป็น ISPConfig เราจะหาสาเหตุได้ยาก หากไม่มีไฟล์ต้นฉบับในการเปรียบเทียบ เพราะไม่ได้ดูในส่วนนี้โดยตรง


Backup Policy

เนื่องการทำ Backup ตาม Retention ที่กำหนด ข้อมูลจะถูกเปลี่ยนแปลงอยู่ตลอดเวลา หากถูกโจมตีทางด้าน Security เราจะทำการหาสาเหตุได้ยาก จึงคิดว่าควรทำ Archive เพื่อใช้ในการเก็บไฟล์ต้นฉบับ โดยกำหนด Retention เป็นระยะเวลา 1 ปี แต่เนื่องจาก VM ที่จะทำ Archive เป็นระบบ ISPConfig ซึ่งไม่ได้อยู่ในความดูแล จึงไม่สามารถตอบได้ว่าควรทำ Archive เวลาใด จึงจะใช้วิธีการให้ผู้ที่รับผิดชอบเลือกเวลามา

แต่กรณีที่เราได้ทำ Backup โดยปกติอยู่แล้ว ซึ่ง Backup Frequency ของ ISPConfig คือรายสัปดาห์ Weekly โดยมี Data Retention เป็น 1 เดือน เราก็จะนำไฟล์นั้นมา Rename เป็นชื่อ Archive แทน

Directory Structure

C:\powershell-script
├───Credential/
│   └───vcsa.lab.local.clixml
├───VM-List/
│   └───Archive.txt
├───VM-Log/
│   └───Archive/
│       └───Backup-Archive-yyyyMMdd.log
└───VM-Script/
    ├───Backup-Archive.ps1
    ├───Configuration.ps1
    └───Delete.ps1

Get Started

  • ทำการเพิ่ม Global Variable ในไฟล์ Configuration.ps1
# VMware Parameter
$Global:folder_archive = 'Archive'

# VM-List
$Global:vm_archive = Get-Content ($root + 'VM-List\Archive.txt')

# VM-Log
$Global:path_log_archive = $root + 'VM-Log\Archive\Backup-Archive-' + $date + '.log'
  • ทำการสร้างไฟล์ Backup-Archive.ps1
. "$PSScriptRoot\Configuration.ps1"
Connect-VIServer -Server $server -Credential $credential

$vm = $vm_archive
$path = $path_log_archive
$folder = $folder_archive
$date = '20181231'
$yyyy = '2018'

foreach ($line in $vm) {

	try {

		$name = 'Backup-Weekly-' + $date + '-' + $line
		$new = 'Archive-' + $yyyy + '-' + $line
		Get-Template -Name $name | Move-Template -Destination (Get-Folder -Name $folder)
		Set-Template -Template $name -Name $new

	} catch {

		# $ErrorMessage = $_.Exception.Message
    		# $FailedItem = $_.Exception.ItemName
		# $error += $line + "`r`n"

	}

}

Disconnect-VIServer -Server $server -Confirm:$false

อ่านเพิ่มเติม : https://bit.ly/2TC5Isg

Leave a Reply

Your email address will not be published. Required fields are marked *