复制Esxi虚拟机

1.复制单个虚拟机

    SRC_VM="klv10-000_1"
    DST_VM="klv10-008"
    DATASTORE="kylin-vdis-storage (1)"
    
    # 录
    mkdir "/vmfs/volumes/${DATASTORE}/${DST_VM}"
    
    # 复制文件
    vmkfstools -i "/vmfs/volumes/${DATASTORE}/${SRC_VM}/${SRC_VM}.vmdk" \
               "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmdk" -d thin
    
    # 复制并修改配置文件
    cp "/vmfs/volumes/${DATASTORE}/${SRC_VM}/${SRC_VM}.vmx" \
       "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
    
    sed -i "s/${SRC_VM}/${DST_VM}/g" "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
    
    # 注册新虚拟机
    vim-cmd solo/registervm "/vmfs/volumes/${DATASTORE}/${DST_VM}/${DST_VM}.vmx"
    
    echo "虚拟机 ${DST_VM} 克隆完成"
    

    2. 批量复制虚拟机

    onfiguration
    SRC_VM="klv10-008"       # Source VM template
    DATASTORE="kylin-vdis-storage (1)"   # Storage location
    START_NUM=12              # First VM number
    END_NUM=106              # Last VM number
    
    # Path definitions
    SRC_DIR="/vmfs/volumes/${DATASTORE}/${SRC_VM}"
    SRC_VMDK="${SRC_DIR}/${SRC_VM}.vmdk"
    SRC_VMX="${SRC_DIR}/${SRC_VM}.vmx"
    
    # Verify source VM exists
    [ ! -d "${SRC_DIR}" ] && { echo "ERROR: Source VM directory ${SRC_DIR} not found"; exit 1; }
    [ ! -f "${SRC_VMX}" ] && { echo "ERROR: Source VMX file ${SRC_VMX} not found"; exit 1; }
    
    # Main cloning loop
    for NUM in $(seq -w ${START_NUM} ${END_NUM}); do
        DST_VM="klv10-${NUM}"
        DST_DIR="/vmfs/volumes/${DATASTORE}/${DST_VM}"
        DST_VMDK="${DST_DIR}/${DST_VM}.vmdk"
        DST_VMX="${DST_DIR}/${DST_VM}.vmx"
    
        echo "========================================"
        echo "Cloning ${SRC_VM} to ${DST_VM}"
        echo "========================================"
    
        # Create destination directory
        mkdir -p "${DST_DIR}" || { echo "ERROR: Failed to create directory ${DST_DIR}"; continue; }
    
        # Clone virtual disk
        echo "Step 1/3: Cloning virtual disk..."
        vmkfstools -i "${SRC_VMDK}" "${DST_VMDK}" -d thin || { echo "ERROR: Disk clone failed"; continue; }
    
        # Copy and modify config file
        echo "Step 2/3: Processing VM configuration..."
        cp "${SRC_VMX}" "${DST_VMX}" || { echo "ERROR: Failed to copy VMX file"; continue; }
        sed -i "s/${SRC_VM}/${DST_VM}/g" "${DST_VMX}" || { echo "ERROR: Failed to modify VMX file"; continue; }
    
        # Register new VM
        echo "Step 3/3: Registering VM..."
        vim-cmd solo/registervm "${DST_VMX}" || { echo "ERROR: VM registration failed"; continue; }
    
        echo "Successfully cloned ${DST_VM}"
    done
    
    echo "Bulk cloning operation completed"