热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

备份一个Linux系统硬盘[Fedora环境]

此方法在Fedora系统验证多次通过。假设你有一个Linux系统已经可以正常工作,现在想复制一个系统出来到另外一个硬盘上以备系统崩溃时开可以立即启用这个备份硬盘,以至于不影响系统的运行,同时这块备份硬盘可能与原系统的硬盘大小不一致。对于上面的苛刻要求,都没关系!下面的方法就解决这个问题。脚本假设前提条件:1.备份硬盘在/dev/sdb2.在运用此脚本前,你必须手动对备份硬

此方法在Fedora系统验证多次通过。

假设你有一个Linux系统已经可以正常工作,现在想复制一个系统出来到另外一个硬盘上以备系统崩溃时开可以立即启用这个备份硬盘,以至于不影响系统的运行,同时这块备份硬盘可能与原系统的硬盘大小不一致。

对于上面的苛刻要求,都没关系!下面的方法就解决这个问题。

脚本假设前提条件:

1. 备份硬盘在/dev/sdb

2. 在运用此脚本前,你必须手动对备份硬盘分区.  1 2 3 <5 6>
/dev/sdb1 mount /boot
/dev/sdb2 swap
/dev/sdb3 mount /
/dev/sdb5 mount /var
/dev/sdb6 mount /home
这样1、2、3为主分区,5、6在扩展分区内。至于每个分区的大小要视你的原系统每个目录的大小为准,自行决定

3. 此脚本要求root权限运行

#! /bin/sh
# backup total system to a Mirror Hard Disk
# written by Visual.Wei

rootdirlist=`ls /`
skiplist="mnt proc sys"
bskip="0"
mirrordsk=/dev/sdb
mntpoint=/mnt/mybakroot

makedir() {
 if [ ! -d $1 ] ; then
  echo $"create directory $1"
  mkdir -p $1
 else
  echo $"dir $1 already existing"
 fi
}

umnt() {
 if [ -e /proc/mounts ] ; then
  if grep $1 /proc/mounts > /dev/null ; then
   umount $1
   echo $"unmount device $1"
  fi
 fi
}

checkdisk() {
 if [ ! -e $1 ] ; then
  echo "Mirror Device $1 can not be found"
  return 1
 else
  return 0
 fi
}

 

if ! checkdisk "$mirrordsk" ; then
 exit 1
fi

umnt "$mirrordsk"1
umnt "$mirrordsk"5
umnt "$mirrordsk"6
umnt "$mirrordsk"3

 

echo $"Format ext3 partitions..."
if checkdisk "$mirrordsk"3 ; then
 mkfs.ext3 -L / "$mirrordsk"3 > /dev/null
else
 exit 1
fi

if checkdisk "$mirrordsk"1 ; then
 mkfs.ext3 -L /boot "$mirrordsk"1 > /dev/null
else
 exit 1
fi

if checkdisk "$mirrordsk"5 ; then
 mkfs.ext3 -L /var "$mirrordsk"5 > /dev/null
else
 exit 1
fi

if checkdisk "$mirrordsk"6 ; then
 mkfs.ext3 -L /home "$mirrordsk"6 > /dev/null
else
 exit 1
fi

echo $"Format swap partition"

if checkdisk "$mirrordsk"2 ; then
 mkswap -v1 -L newswap "$mirrordsk"2 > /dev/null
else
 exit 1
fi


makedir $mntpoint
echo $"mount root directory"
mount "$mirrordsk"3 $mntpoint

makedir $mntpoint/boot
makedir $mntpoint/var
makedir $mntpoint/home

echo $"mount other directories..."
mount "$mirrordsk"1 $mntpoint/boot
mount "$mirrordsk"5 $mntpoint/var
mount "$mirrordsk"6 $mntpoint/home


echo $"start copy system directories...It may takes very long time"
for i in $rootdirlist ; do
 bskip="0"
 for j in $skiplist ; do
  if [ "$i" == "$j" ] ; then
   echo $"skip $i"
   bskip="1"
   break
  fi
 done
 if [ "$bskip" == "0" ] ; then
  echo $"copy directory $i"
  cp -a /$i $mntpoint
 fi
done

echo $"create empty directories..."
for j in $skiplist ; do
 makedir $mntpoint/$j
done


echo $"please use ,then edit and "

脚本会找到/dev/sdb,并且umount每个分区,然后对每个分区格式化,最后复制目录结构。

运行完毕时,硬盘的数据就和原系统一摸一样了。

但是有个问题,当原系统的硬盘崩溃时,你必须卸下原系统的硬盘,然后装上备份硬盘引导系统,因此备份硬盘还缺少独立引导能力。所以还有几件事

1. chroot /mnt/mybakroot

2. vim etc/fstab

备份硬盘可能需要拥有于原硬盘不一样的fstab,因为他们可能存储空间大小不同,分区结构也不同

3. vim boot/grub/menu.lst

备份硬盘可能需要拥有于原硬盘不一样的内核启动菜单,因为他们可能存储空间大小不同,分区结构也不同

4. grub-install /dev/sdb

向备份硬盘写入bootloader---grub


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文详细介绍了Vim编辑器中的三种模式(命令模式、末行模式和编辑模式)以及它们之间的操作区别和切换方法。Vim编辑器凭借其多种命令快捷键和高效率的操作方式,得到了广大厂商和用户的认可。对于想要高效操作文本的用户来说,了解这些模式的使用方法是必不可少的。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
  • 1、打开etcsysconfiggrub,   #vimetcsysconfiggrub   内容如下: ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • Linux 服务器修改用户名
    Linux服务器修改用户名1、编辑名称vimetchostname2、保存编辑并退出wq3、重 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
author-avatar
未知的明天
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有