Virtualization

刪除 VMWare 快照的腳本?

  • October 10, 2011

我想在執行 VM 的集中備份之前集中刪除 vMA 主機上的所有非活動快照。我希望這樣的腳本已經存在???有人知道嗎?

編輯:

這是一個使用基本 vMA 工具來完成這項工作的腳本:

#!/bin/bash
#
# Purpose: List all snapshots for registered and powered-on VMs found on those
#          ESXi hosts listed as VI Fastpass targets (vifptarget -l).
#
# Author: Ryan Bowlby


# VIFP ESXi hosts
esxi_hosts=$( /usr/bin/vifp listservers | awk '$2 ~ /ESXi/ { print $1 }' )

# Have to specify an esxi target before the "--server" opt works.
# http://www.virtuallyghetto.com/2011/01/how-to-automate-cron-vi-fastpass.html
first_esxi=$( echo $esxi_hosts | awk '{print $1}' )
source /opt/vmware/vma/bin/vifptarget -s $first_esxi > /dev/null 2>&1

for host in $esxi_hosts; do
  reg_vms=$( /usr/bin/vmware-cmd --server $host -l 2>/dev/null)
  for vm in $reg_vms; do
     if /usr/bin/vmware-cmd --server $host $vm getstate | grep -q 'getstate() = on'; then
        # print VM name (everything after last /) aka vm.split('/')[-1] ;)
        vm_name="`echo $(basename $vm) | sed 's/\.vmx$//g'`"
        #vm_name=$( IFS='/'; for elem in $vm; do echo $elem; done | tail -1 | sed 's/\.vmx$//g' )
        echo $vm_name
        if /usr/bin/vmware-cmd --server $host $vm hassnapshot | grep -q "1"; then
           echo $vm_name has a snapshot, removing...
           /usr/bin/vmware-cmd --server $host $vm removesnapshots
        fi
     fi
  done
done

我不知道要執行此操作的整個腳本,但VMWare SDK 文件的第 39 頁向您展示瞭如何使用vmsnapshot.pl和創建它們snapshotmanager.pl- 所以我相信您可以查看這些腳本(現在這樣做為時已晚)和看看有什麼選擇。

顯然,您的 vMA 支持這些。

編輯 - 您想要的命令是RemoveSnapshot_Task found HERE

引用自:https://serverfault.com/questions/303904