使用tar命令进行整机备份与裸机恢复

使用tar命令进行整机备份与裸机恢复

  • 主要内容
    • 1.U盘中的Linux安装
    • 2.整机系统备份
    • 3.裸机系统恢复
  • 整机备份
    • backup.sh
  • 裸机恢复
    • reback.sh
    • reback_chroot.sh

主要内容

1.U盘中的Linux安装

本文以Ubuntu 16.04 LTS desktop等为实验对象,研究以U盘作为载体安装一个较小的Linux系统,并把此系统作为系统恢复的载体。即使用该U盘Linux系统启动裸机,并以此作为备份系统恢复的平台。

2.整机系统备份

以正常运行的Linux服务器为对象,使用tar命令对该系统进行整机的完全备份。

3.裸机系统恢复

以第二步为基础,在一台没有系统的机器中使用第一步制作的U盘系统启动,恢复上述备份。要求备份后的系统能够在恢复后,其中所有的服务能够正常使用,如web服务、ftp服务等。

整机备份

本程序适用于只有两个分区的ubuntu系统,即一个主分区一个交换分区。只要目标新硬盘的空间不小于20GB皆可运行.可以通过修改"+19G"来改变主分区的大小.假若一硬盘有xGB,如果不对本程序进行修改的话,那么有19G拿来作为主分区,其余的空间都是swap分区。

模拟的服务器运行在VMware,磁盘大小为20GB,安装有MySQL及web服务。

[执行命令:sudo backup.sh]

backup.sh

#!/bin/sh #author:Jerrybird 
#name:backup.sh 
mkdir /baksys #create a directory for storing .tar.gz file and other partion file and so on mkdir /baksys/fullbackup 
rm -r /baksys/fullbackup/* 
tar -czpvf /baksys/fullbackup/backup_1_img.tar.gz / --exclude=/baksys --exclude=/lost+found --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/dev/* --exclude=/media/* --exclude=/mnt/* 2>>/baksys/tar1.errors.log 
fdisk -l >/baksys/partion.txt

裸机恢复

本程序适用于只有两个分区的系统,即一个主分区一个交换分区。只要目标新硬盘的空间不小于20GB皆可运行.可以通过修改"+19G"来改变主分区的大小.假若一硬盘有xGB,如果不对本程序进行修改的话,那么有19G拿来作为主分区,其余的空间都是swap分区。

[[33-57行的空格不能删掉,也不能增加,是用来传递给fdisk的指令]]!!!

[执行命令:sudo reback.sh]

reback.sh

#!/bin/sh
#author:Jerrybird

fdisk -l 2> /dev/null | egrep "^Disk /dev/[s,h]d[[:alpha:]]" | awk -F: '{print $1,$2}'
#sleep 5s
read -p "Please input the device path that you want to set:" choice1

until  fdisk -l 2> /dev/null | egrep "^Disk /dev/[s,h]d[[:alpha:]]" | awk -F: '{print $1}'  | egrep "^Disk /dev/${choice1}$" 2>/dev/null 
do
	if [ ${choice1} = "quit" ] ;then  echo "Quiting..."  ; exit 8 ;fi
	read -p "Please input the device path again that you want to set:" choice1
done
choice1="/dev/"${choice1}
echo "${choice1}"
echo "EUC"
read -p  "Your choice is $choice1, Partition will damamge the data, Please confirm(y|n):" choice2
until [ $choice2 = "y"  -o $choice2 = "Y" -o $choice2 = "n" -o $choice2 = "N" ]
do
	read -p  "Your choice is $choice2 ,Partition will damamge the data, Please confirm(y|n):" choice2
done	
if [ $choice2 = "N" -o $choice2 = "n" ]
then
	echo "Quiting.." 
	exit 9
else	
	df | grep $choice1 2> /dev/null  && echo "$choice1 are using. Please umount it  first." && exit 9
	echo "erasing the partition data....."	
	dd if=/dev/zero of=$choice1 bs=512 count=1 &> /dev/null
	sync &&	sleep 3
	partprobe $choice1
	echo "Creating new partition..."
echo 'd

d

d

n
p
1

+19G
n
e
2


n


t
5
82
a
1
w' | fdisk $choice1 2> /dev/null
	sync && sleep 3
	partprobe $choice1
	echo "creating filesystem..."
	mkfs.ext4 ${choice1}1 2> /dev/null
	mkswap ${choice1}5 2> /dev/null
	swapon ${choice1}5  2> /dev/null
	echo "SUC"
fi 
echo "partioning the disk over,geshihua over..."
echo "mount to /mnt"
sleep 10s
mount ${choice1}1 /mnt 
tar -xzpvf /home/jerrybird/backup_img/fullbackup/backup_1_img.tar.gz -C /mnt 
mount --bind /dev /mnt/dev 
mount --bind /proc /mnt/proc 
mount --bind /sys /mnt/sys 
echo "mount over"
cp /home/jerrybird/backup_img/fullbackup/reback_chroot.sh /mnt/
echo $choice1 > tempfile
cp ./tempfile /mnt
sleep 2s
echo "chroot"
chroot /mnt /bin/bash -c "/bin/sh reback_chroot.sh"
echo "exited chroot"
echo "umount"
umount /mnt/dev /mnt/proc /mnt/sys /mnt
echo "======================Done======================="
echo "||           Successful congratulations!       ||"
echo "=================================================" 

reback_chroot.sh

choice1=`more tempfile`
echo "grub-install $choice1"
grub-install $choice1
uuid=`blkid | egrep "${choice1}1" | awk -F \" '{print $2}'`
echo $uuid
sed -i "s/[a-z0-9]\{8\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{12\}/${uuid}/g" /boot/grub/grub.cfg
sed -i "s/[a-z0-9]\{8\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{4\}-[a-z0-9]\{12\}/${uuid}/g" /etc/fstab
echo "exit chroot"
sleep 3s

源博客:大魔王ISDevil’s Blog

你可能感兴趣的:(使用tar命令进行整机备份与裸机恢复)