热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

XenServer虚拟机备份脚本

最近忙着弄虚拟机,什么数据都需要备份,即使虚拟机也不例外,下面是我自己写的备份脚本根据实际情况进行使用,:)首先做一个NFS服务器,此服务器需要大容量磁盘,然后再需要备份的虚拟服务器主机上挂在共享目录然后就可以实施脚本做成计划任务做备份###

 最近忙着弄虚拟机,什么数据都需要备份,即使虚拟机也不例外,下面是我自己写的备份脚本根据实际情况进行使用,:)

首先做一个NFS服务器,此服务器需要大容量磁盘,然后再需要备份的虚拟服务器主机上挂在共享目录

然后就可以实施脚本做成计划任务做备份

 ###################################################################################################

####                       创建所有虚拟机的快照并导出为模板删除快照          ####

###################################################################################################

#全部  测试OK

#!/bin/bash

#Version: v.2

#Date: 2012.07.20

#Auther:andylhz

#Propose:Create All VM's snapshot on XenServer and export snapshot to template and delete the snapshot.

#Script name: A_vm_export_shapshot_to_template.sh, Example:./A_vm_export_shapshot_to_template.sh

##Get System Date

DT=$(date +%Y%m%d%H%M%S)

##Seting backup dir

backup_dir=/root/vmbk

##Get VM uuid list

echo "VM snapshot is createing...."

   for vmname in `xe vm-list params=name-label |awk '{print $5}' |grep -v ^C |sed '/^$/d'` ;

     do echo `xe vm-snapshot vm=$vmname    new-name-label=$vmname`  >> $backup_dir/snapshot_uuid ;            

     if [ $? -eq 0 ]; then

      echo  "VM snapshot $vmname is created....OK!"

    else

      echo  "VM snapshot $vmname is created....FAILSE!"

      exit 1

    fi

    done

##Export snapshots as a template

#Get snapshot uuid

xe snapshot-list params=uuid,name-label|sed '/^$/d' |awk '{print $4,$5}' |sed 's/: //g'|sed -e 'N; s/\n/ /g' >$backup_dir/vmname_sanpuid

echo "Templates are exporting please waite....."

   for snap_uuid in `cat $backup_dir/vmname_snapuid|awk '{print $1}'`;

     do xe snapshot-export-to-template  snapshot-uuid=$snap_uuid   filename=$backup_dir/$snap_uuid$DT.xva ;

   if [ $? -eq 0 ]; then

      echo  "VM template $snap_uuid$DT is created....OK!"

   else

      echo  "VM template $snap_uuid$DT is created....FAILSE!"

      exit 1

   fi

   done

##Compressed export file.

cd  $backup_dir

echo "VM templates are being compressed...."

gzip  *.xva

 if [ $? -eq 0 ]; then

      echo  "VM template is compressed....OK!"

 else

      echo  "VM template is compressed....FAILSE!"

      exit 1

 fi

##Delete snapshot

echo "Deleteing snapshot....."

      for snap_uuid in `cat $backup_dir/snapshot_uuid`;

         do xe snapshot-uninstall    snapshot-uuid=$snap_uuid force=true;

 if [ $? -eq 0 ]; then

      echo   "Snapshot $snap_uuid deleted.....OK!"

 else

      echo   "Snapshot $snap_uuid deleted.....FAILSE!"

      exit 1

 fi

      done

mv snapshot_uuid   snapshot_uuid$DT

mv vmname_sanpuid vmname_sanpuid$DT

###################################################################################################

####                           对某个虚拟机做快照并导出为模板                ####

###################################################################################################

#静默方式 测试OK!

#!/bin/bash

#Version: v.1

#Date: 2012.07.20

#Auther:andylhz

#Propose:Create one VM's snapshot on XenServer and export snapshot to template and delete the snapshot.

#Script name: Q_vm_export_shapshot_to_template.sh, Example:Q_vm_export_shapshot_to_template.sh  snapshot_name

#Dfine varable

#Get System Date

DT=$(date +%Y%m%d%H%M%S)

#Seting backup dir

backup_dir=/root/vmbk

#VM name you want to export, parameter is shapshot name!

v_host=$1 

##Create vm snapshot 

echo "VM snapshot is createing...."

echo `xe vm-snapshot vm=$v_host    new-name-label=$v_host$DT`  > $backup_dir/snapshot_uuid

    [ -n  $backup_dir/snapshot_uuid ]

    if [ $? -eq 1 ]; then

      echo  "VM snapshot $v_host$DT is created....OK!"

    else

      echo  "VM snapshot $v_host$DT created....FAILSE !"

      exit 1

    fi

sn_uuid=`cat $backup_dir/snapshot_uuid`

echo "Convert snapshot to template and export"

echo "Template exporting....."

xe snapshot-export-to-template  snapshot-uuid=$sn_uuid   filename=$backup_dir/$v_host$DT.xva

if [ $? -eq 0 ]; then

      echo  "Template $v_host$DT Exported...OK!"

    else

      echo "Template $v_host$DT Exported...FAILSE!"

      exit 1

    fi

cd  $backup_dir

echo "VM templates are being compressed...."

gzip  $v_host*.xva

 if [ $? -eq 0 ]; then

      echo  "VM template $v_host*.xva is compressed....OK!"

 else

      echo  "VM template $v_host*.xva is compressed....FAILSE!"

      exit 1

 fi

echo "Deleteing snapshot:"$sn_uuid

xe snapshot-uninstall snapshot-uuid=$sn_uuid  force=true

if [ $? -eq 0 ]; then

      echo   "Snapshot $sn_uuid deleted.....OK!"

 else

      echo   "Snapshot $sn_uuid deleted.....FAILSE!"

      exit 1

 fi

###################################################################################################

####                             解压缩模板并导入创建虚拟机                  ####

###################################################################################################

#!/bin/bash

#Version v.1

#Date: 2012.07.20

#Auther:andylhz

#Porpose: Install VM from GZIP template.

#Script name: gzip_vm_install_from_template.sh, Example:gzip_vm_install_from_template.sh  abc_template.gz

#Import VM template and  install

#read  import

gunzip $1

#gunzip import file

importfile=`echo $1 |sed  s/\.gz$//g`

#importfile=`echo $import |sed  s/\.gz$//g`

xe vm-import filename=$importfile

    if [ $? -eq 0 ]; then

            echo  "VM Template $importfile import success....OK!"

       else

            echo  "VM Template $importfile import....FAILSE!"

            exit 1

    fi

##Create VM from template

echo "Installing VM:"${importfile}clone

xe vm-install template=$importfile new-name-label=${importfile}clone  

 if [ $? -eq 0 ]; then

            echo  "Installing VM:"${importfile}clone....OK!"

       else

            echo  "Installing VM:"${importfile}clone....FAILSE!"

            exit 1

    fi

#Starting VM

echo "Starting VM:"${importfile}clone

xe vm-start vm=${importfile}clone

 if [ $? -eq 0 ]; then

            echo "Starting VM:"${importfile}clone....OK!"

       else

            echo "Starting VM:"${importfile}clone....FAILSE!"

            exit 1

    fi

echo "All options is OK"

###################################################################################################

####                               根据导入模板并创建虚拟机  ####

###################################################################################################

静默+参数模式:

#!/bin/bash

#Version v.2

#Date: 2012.07.20

#Auther: andylhz

#Porpose: Install VM from template.

#Script name: Q_vm_install_from_template.sh, Example: Q_vm_install_from_template.sh  template_name

##Creater VM from imported template

install_tp=$1

echo  "Use VM template is:"$1

echo  "The VM is installing....." 

xe vm-install template=$install_tp new-name-label=${install_tp}clone

echo "Starting VM:"${install_tp}clone

xe vm-start vm=${install_tp}clone

echo "Starting VM:"${install_tp}clone "OK!"

echo "All options is OK!"

###################################################################################################

备份中的备份文件夹是挂在远端的NFS 服务器到本地xen服务器上。

NFS配置在这里不做介绍


推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文详细介绍了在 Linux Bash 环境下使用的各种快捷键,包括命令编辑、控制、历史命令重用及特殊命令等,帮助用户提高操作效率。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 2019年独角兽企业招聘Python工程师标准课程概览
    本文详细介绍了2019年独角兽企业在招聘Python工程师时的标准课程内容,包括Shell脚本中的逻辑判断、文件属性判断、if语句的特殊用法及case语句的应用。 ... [详细]
  • 一文详解Linux
    Linuxnetfilter与VRF实验环境如下图所示:配置如下:#!binbashsudoipnetnsaddns1sudoiplinkaddns1veth1typevethpe ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 16.04 系统上配置 Qt 5.5 的交叉编译环境,特别针对 i.MX6 平台进行了优化设置。内容涵盖从基本的软件安装到高级配置的全过程。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 通过设置Linux中的cd命令别名,用户能够更加高效地在复杂的目录结构中进行工作目录的切换。本文介绍了几种实用的方法,帮助减少重复输入路径的工作量。 ... [详细]
  • 每种编程语言都有其独特的完成任务的方式,这也说明了为什么有这么多语言可供选择。在JimHall的《不同的编程语言如何完成相同的事情》文章中,他演示了13种不同的语言如何使用不同的语 ... [详细]
  • 本文详细记录了使用 Docker 创建和管理自定义网络的命令,包括创建指定子网的网络、删除网络以及在指定网络中运行容器的具体操作。 ... [详细]
  • 1、什么是过滤器管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入, ... [详细]
author-avatar
violalal_134
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有