XenServer 虚拟机备份脚本

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

首先做一个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配置在这里不做介绍

时间: 2024-10-29 18:18:03

XenServer 虚拟机备份脚本的相关文章

使用云祺虚拟机备份软件备份Citrix XenServer 虚拟机

1.进入云祺虚拟机备份系统,选择[备份/恢复]--[虚拟机备份],新建备份任务. 2.在Citrix XenServer虚拟化类型下勾选要备份的虚拟机,选择的虚拟机即显示在[已选择的虚拟机]下面,滚动页面到底部,点击[下一步]. 3.备份方式可以选择[按策略备份]和[一次性备份].若选择[按策略备份],则会按照设置的时间策略来进行备份.先选择备份类型:[完全备份].[增量备份].[差异备份].[完全备份]将会对备份源的全部数据进行备份,备份完成后备份数据成为一个完全备份时间点,备份的是所有数据.

使用云祺虚拟机备份软件恢复Citrix XenServer 虚拟机

1.进入云祺虚拟机备份系统,选择[备份/恢复]-[虚拟机恢复],新建恢复任务. 2.在Citrix XenServer虚拟化类型下勾选要需要恢复的备份点,点击[下一步]. 3.设置恢复目标宿主机,并按需配置恢复虚拟机的名称.状态.存储.网络,点击[下一步]. 4.按需配置恢复方式及传输模式,点击[下一步]. 5.确认配置信息,点击[下一步]. 6.提交任务后自动跳转到[当前任务]页面,可以查看刚才创建的备份任务.点击右侧的"操作"按钮可以手动运行或停止任务,也可以等待系统按照设定的策略

使用云祺虚拟机备份软件瞬时恢复Citrix XenServer 虚拟机

1.进入云祺虚拟机备份系统,选择[备份/恢复]-[虚拟机瞬时恢复],新建瞬时恢复任务. 2.在Citrix XenServer虚拟化类型下勾选要需要恢复的备份点,设置恢复目标宿主机,并按需配置恢复虚拟机的名称.状态.存储.网络,点击[下一步]. 3.提交任务后自动跳转到[当前任务]页面,可以查看刚才创建的备份任务.点击右侧的"操作"按钮可以手动运行或停止任务,也可以等待系统按照设定的策略自动执行备份任务.点击任务名称,可以进入[任务详情]页面. 原文地址:http://blog.51c

使用云祺虚拟机备份软件备份Redhat RHV/Ovirt 虚拟机

1.进入云祺虚拟机备份系统,选择[备份/恢复]--[虚拟机备份],新建备份任务. 2.在Redhat RHV/Ovirt虚拟化类型下勾选要备份的虚拟机,选择的虚拟机即显示在[已选择的虚拟机]下面,滚动页面到底部,点击[下一步]. 3.备份方式可以选择[按策略备份]和[一次性备份].若选择[按策略备份],则会按照设置的时间策略来进行备份.先选择备份类型:[完全备份].[增量备份].[差异备份].[完全备份]将会对备份源的全部数据进行备份,备份完成后备份数据成为一个完全备份时间点,备份的是所有数据.

WEB页面,WEB环境版本,数据库,整站备份脚本

#!/bin/bash # #WEB页面,WEB环境版本,数据库,整站备份脚本 #当发生某个原因导致整个服务器无法恢复时,利用上面备份的相关数据即可重做一台一样的服务器 date_a=`date +%Y%m%d-%H%M%S` mkdir -p /web_bak/${date_a}/conf &> /dev/null mkdir -p /web_bak/${date_a}/web &> /dev/null mkdir -p /web_bak/${date_a}/mysql &a

mysql备份脚本

对extmail数据库进行每天01:00完全热备份,并可以完全恢复! 一.先建立备份脚本,如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 vi mysql_extmail_bak.sh #!/bin/bash # Program #    use mysqldump to Fully backup mysql data per week! BakDir=/mysqlback#要备份到的目录 LogFile=/var/log/bak.log#备份记录日志

linux 自动备份脚本

首先我在/root/backup 目录下建立一个文件夹, #mkdir /root/backup/mysqlbackup 以后在每天五点钟,就会有一个文件保存在这里. 接着新建文件 #vim /root/mysqlautobak 输入: filename=` date +%Y%m%d ` mysqldump --all-databases -uroot -p(mysql密码)> /root/backup/mysqlbackup/mysql$file.sql 保存退出! 让它可以执行 #chomd

Xtrabackup全量备份/增量备份脚本

一.全量备份脚本 1.全量备份脚本 #!/bin/bash #Description:xtrabackup complete #Author:created by michael #2017-08-07 v0.1 # USER=root PASSWD=123456 BACKUP_DIR=/backup/mysql/complete DATE=$(date +"%F_%T") [[ -d $BACKUP_DIR ]] || mkdir $DATE_DIR innobackupex --u

分享一个MySQL分库分表备份脚本(原)

分享一个MySQL分库备份脚本(原) 开发思路: 1.路径:规定备份到什么位置,把路径(先判断是否存在,不存在创建一个目录)先定义好,我的路径:/mysql/backup,每个备份用压缩提升效率,带上时间方便整理 2.取数据库:抓取数据库名称,我用的awk和grep配合取数据库的名称(如果想按照表备份可以再细化一下)注意要用mysql -e选项 这样才能做成脚本 3.系统环境变量:因为用到了函数,所以非系统内置的命令 最好在脚本里面用 . /etc/profile  把系统当前的环境变量传过来