5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

特定のVMをコピー,削除するシェルスクリプト

Last updated at Posted at 2024-07-09

はじめに

ESXiホスト上で特定のVMを別のディレクトリにコピーし,元のVMを削除するシェルスクリプトを紹介します.このスクリプトは,システム管理者がVMの管理を効率的に行うために役立ちます.

必要なツール

・ESXiホスト
・シェルスクリプト

シェルスクリプトの概要

このスクリプトは,以下の手順で特定のVMを処理します.

1. 指定されたVMの電源状態を確認し,必要に応じて電源をオフにします.
2. VMのディレクトリをコピー先にコピーします.
3. コピーが完了したらコピー元のVMを登録解除して削除します.

スクリプト

以下は,特定のVMを処理するシェルスクリプトです.

#!/bin/bash

# 引数の確認
if [ $# -ne 1 ]; then
  echo "使用法: $0 <VM名>"
  exit 1
fi

# VM名の取得
VM_NAME=$1

# コピー先ディレクトリ
COPY_DEST="コピー先ディレクトリ指定"
VM_SOURCE_DIR="コピー元ディレクトリ指定"

echo "VMの処理中: $VM_NAME"

# VMの状態をチェック
VM_ID=$(vim-cmd vmsvc/getallvms | grep -w "$VM_NAME" | awk '{print $1}')
if [[ -z "$VM_ID" ]]; then
  echo "VMが見つかりません: $VM_NAME"
  exit 1
fi

POWER_STATE=$(vim-cmd vmsvc/power.getstate $VM_ID | tail -1)
if [[ "$POWER_STATE" == "Powered on" ]]; then
  echo "VMが起動しているため,今から電源を切断します: $VM_NAME"
  vim-cmd vmsvc/power.off $VM_ID
  if [[ $? -ne 0 ]]; then
    echo "VMの電源をオフにできませんでした: $VM_NAME"
    exit 1
  fi
fi

# VMディレクトリをコピー先にコピー
VM_DIR="$VM_SOURCE_DIR/$VM_NAME"
DEST_DIR="$COPY_DEST/$VM_NAME"
echo "コピー中 $VM_DIR から $DEST_DIR へ"
cp -r $VM_DIR $DEST_DIR
if [[ $? -ne 0 ]]; then
  echo "VMディレクトリをコピーできませんでした: $VM_NAME"
  exit 1
fi

echo "正常にコピーされました: $VM_NAME"

# コピー元VMを削除する
echo "コピー元のVMを削除中: $VM_NAME"
rm -rf $VM_DIR
if [[ $? -ne 0 ]]; then
  echo "VMを削除できませんでした: $VM_NAME"
  exit 1
fi

echo "VMのコピーと削除が完了しました。"

使い方

スクリプトをファイルに保存します.例えば,vm_copy.shという名前にします.

注意 これをしないと実行できません.
実行権限を付与します:

chmod +x vm_copy.sh

VM名を引数にしてスクリプトを実行します:

./vm_copy.sh VM名

実行結果

VMの処理中: exampleVM
VMが起動しているため,今から電源を切断します: exampleVM
Powering off VM: exampleVM
コピー中 /vmfs/volumes/datastore1/exampleVM から /backup/exampleVM へ
正常にコピーされました: exampleVM
コピー元のVMを削除中: exampleVM
VMのコピーと削除が完了しました。

exampleVMというVMを処理を行った場合このように実行されます.

まとめ

このシェルスクリプトを使うことで,ESXiホスト上の特定のVMを効率的に管理できます.不要になった元のVMを自動で削除することで,ストレージの最適化にも貢献します.

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?