Linux系统全盘备份方法

公司有台服务器,搬家搬过来搬过去的,现在都搞不清楚是谁负责的机器。白白放置了一个多月,期间也发过公告,也没同事响应。单用户进入系统之后,发现里面都是很老的数据,但是又不确定是否有用,也不敢乱来。so,  把硬盘的数据全部拷贝出来,免得白白浪费资源。

方案1:

直接复制整个硬盘,非常底层的数据复制,包括 boot loader 和分区表在内的所有数据都能完整的复制。不过目标盘的容量不能比源盘的容量低,否则文件系统容易悲剧(强烈建议:最好两块硬盘是同一容量和同一型号,否则比较麻烦。)。而且这种方式需要拷贝整个硬盘,即使你什么文件也没写,速度也很慢。

dd 命令可以复制单块硬盘:

# dd if=/dev/sda of=/dev/sdb & ddpid=$!

可以在另一个终端向 dd进程发送 USR1 信号, 查看当前进度

# kill -USR1 $ddpid

也可以同时复制到多块硬盘

# dd if=/dev/sda | tee >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) > /dev/null

另外还有 G4L, CloneZilla这样的工具也可以进行全盘复制。

方案2:

1、挂载硬盘,添加分区

第一步:添加硬盘/新建分区(fdisk)

第二步:格式化分区(mkfs.ext4)

第三步:加载分区(mount)

1、第一步:添加硬盘/新建分区(fdisk)

a、查看当前系统所有硬盘及分区情况:fdisk -l
b、在指定的硬盘(例:/dev/sda)上创建分区:fdisk /dev/sdb , 根据提示进行下一步操作,如:查看帮助(h),新建分区(n),删除分区(d),查看分区情况(p)
c、分区成功后,写分区表并退出(w)

注:fdisk 支持硬盘最大尺寸为 2TB,更详细说明请参看 Linux 在线手册(man fdisk)或百度一下。

2、第二步:格式化分区(mkfs.ext4)

对新建分区(例:/dev/sda1)进行格式化:mkfs.ext4 /dev/sdb1 。

3、第三步:加载分区

a、创建分区挂接目录,例:mkdir /disk-cache-1 和 mkdir /disk-cache-2
b、编辑 /etc/fstab 配置文件,将分区信息写进去。
c、加载新建分区:mount -a

2、复制文件系统根目录,注意要排除目标盘 mount 的目录和系统自己 mount 的目录(可以用 mount -l 查看,比如/proc,/sys 这些目录)

# su - root
# cd /

# tar -cvpzf /mnt/backup.tgz --exclude=/proc --exclude=/sys --exclude=/lost+found --exclude=/mnt --exclude=/media --exclude=/var/tmp  /

或者
# tar c --exclude=/proc/* --exclude=$EXCLUDE_DIR / | (cd /mnt/sdb2; tar x)

c – 新建一个备份文档
v – 详细模式, tar程序将在屏幕上实时输出所有信息。
p – 保存许可,并应用到所有文件。
z – 采用‘gzip’压缩备份文件,以减小备份文件体积。
f – 说明备份文件存放的路径, /mnt/backup.tgz 是本例子中备份文件名。这个备份文件备份的位置是其它分区,也就是原来的WIN分区中。来看看我们想要包含的目录,我们不想备份所有的东西,因为有些目录是没有多大用处的。确认你不想包含的文件,否则您会得到一个很奇怪的结果。您也不必备份/mnt 目录下的东西,除非您有其他分区挂在它下面或者你坚持要备份。您还必须确保没有任何资源挂在 /media目录下(比如,任何CD或者移动存储介质),否则,剔除/media。

最后一个参数是我们想要保存的目录. 我们想要保存所有的东西,使用 / 作为根目录。

3、还原的方法:请注意,可能会覆盖您原有的数据,下面的操作必须小心。。

# tar -xvpzf /mnt/backup.tgz -C /

参数x是告诉tar程序解压缩备份文件。 -C 参数是指定tar程序解压缩到的目录。

如果要把系统也搬过去,那么情况稍微复杂一点。

用fdisk 对新硬盘进行分区,然后通过 mkfs.ext4 / mkswap 创建好文件系统和 swap分区,然后把分区 mount挂载到系统上。

修改 /etc/fstab,现在的linux系统基本都是通过 UUID 而不是 /dev/sdc1这样的方式来进行挂载的,所以要修改成新硬盘相应分区的UUID。

安装 boot loader

一开始我们以为直接用 dd 复制源硬盘 MBR 的前 446 字节(启动代码部分)过去就可以了,但启动发现连 grub 菜单都进不去。

其实 grub 启动包含了两个阶段的代码,第一阶段代码是在 MBR 里的,第二阶段在文件系统上,那么 grub 如何从第一阶段跳转到第二阶段呢?它是把第二阶段代码所在的磁盘扇区位置记录在 MBR 中 [1]。而这份代码在每块硬盘上的位置肯定是不一样的,于是 grub 没办法跳转到第二阶段继续执行。

所以我们得重新安装 boot loader:

# grub-install --root-directory=/mnt/sdb2

这里 --root-directory 是告诉 grub 说我们的根文件系统是在 sdb2 上而不是源硬盘上。

方案3:

可以试试 rsync   第一次全同步相当于复制 以后只同步修改过的文件。(我没有试过)

时间: 2024-10-05 20:22:06

Linux系统全盘备份方法的相关文章

外网PC(win7系统)通过SSH连接其它局域网PC(Linux系统)的方法探索

为方便叙述,将外网PC(win7系统)简称为主机W,将PC(Linux系统)简称为主机L. 两个主机的基本网络环境描述如下. a. 主机L是家庭PC,通过路由器接入到网络运营商的网关,进而连接互联网.路由器无固定外网IP,路由器外网IP变化时,需在主机W处更改远程连接目标的IP地址. b. 主机W连接在公司局域网,可通过公司网关连接到互联网. 以下为实现过程的描述. 1. 配置主机L (1)通过浏览器访问路由器网络设置管理页面.笔者使用的路由器型号为iPtime N604A,在浏览器地址栏输入1

修改linux系统时间的方法(date命令)

修改linux系统时间的方法(date命令) 来源:互联网 作者:佚名 时间:11-18 23:22:27 [大 中 小] date命令不仅可以显示系统当前时间,还可以用它来修改系统时间,下面简单的介绍下,方便需要的朋友 命令格式为: date -s 时间字符串 例如只修改系统的日期,不修改时间(时分秒) date -s 2012-08-02 或只修改时间不修改日期 date -s 10:08:00 当然也可以同时修改日期和时间 date -s "2012-05-18 04:53:00"

P2V后LINUX系统开机处理方法

P2V后LINUX 处理 /boot/ sh-3.2# mkinitrd -v -f initrd-2.6.18-164.el5.img $(uname -r) 要打包的内核文件名     内核版本号 ##更新当前虚拟机的内核: #如果修复光盘与系统不一至的情况: $(uname -r)这里直接敲虚拟机的内核版本号: 问题集: 开机出现"Error loading operating system"的提示信息,只需要利用光盘进入恢复模式,修复一下grub就可以开机了,确保你的虚拟机硬盘

系统全盘备份与还原

磁盘系统备份 大家应该都制作过启动盘吧!!!如果没有制作过启动盘的,估计怕是看不懂的哟~~~~~  市场上常见的pe启动盘有很多种(大白菜.老毛桃.U大师等等),它们都是傻瓜式的非常简单就可以安装成功了啦!!!这里我就当大家都能成功制作启动盘来讲解了,好了言归正传,下面来介绍常见的个人版系统的全盘备份与还原吧!!! 首先,我们将pe系统盘插入到电脑中,电脑会读取磁盘到pe系统界面,非常炫酷的一个界面哟. 这个界面弹出的动画炫框框是我们将gho/iso的文件放在对应的文件下面才会自动弹出来的~~~

唠一唠Linux系统入门的方法和经验

相信大伙都听说过Linux系统,然而对于这个系统,总使让新手感觉茫然,偌大的系统.下面是一段百度中的介绍: linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.它支持32位和64位硬件.Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统.说了这么多,是不是感觉很晕.没关系,这些东西不用去深究这些,作为菜鸟,你需要从基本做起,这篇文

说一说本人对linux系统学习的方法和经验

摘要: 相信大伙都听说过linux系统,然而对于这个系统,总使让新手感觉茫然,诺达的系统.下面是一段百度中的介绍: 相信大伙都听说过linux系统,然而对于这个系统,总使让新手感觉茫然,诺达的系统.下面是一段百度中的介绍: Linux系统是一套开源的并且能够自由传播的类似与Unix操作系统,是一个基于POSIX和UNIX的多任务.多用户.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议.Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操

制作U盘启动来安装Linux系统的具体方法

一.基础准备工作: 1.    U盘或是移动硬盘1个,存储空间的大小取决于存放LINUX系统的大小: 2.    准备好刻录软件UltraISO或是其他刻录软件,只要能将启动文件写入U盘并成功启动即可: 3.    准备好Centos系统镜象文件: 二.将U盘制作启动硬盘 4.    打开UltraISO软件,并打开Centos6.5镜象源: 5.    点击"启动采单",点击"写入硬盘镜象",确定写入方式,该方式的确定,关键看主板的支持.此写入的过程大概要几十分钟

Linux系统自动备份的Shell

公司现在需要对现有的服务器进行定期备份,并将备份文件放置到正在使用的NAS中去: 为了备份的效率,还需要对备份的文件进行筛选,排除一些后缀名的文件: 实现方法如下: 1. 编写备份的shell文件 在想要放置shell文件的地方编辑backup.sh文件 # vi backup.sh 我们要备份整个目录中的文件,除了一些指定后缀名的文件,所以: # # Backup main project folder at PM 2:00 # By Andrew at 2016/12/2 # #!/bin/

Linux系统中备份和恢复MongoDB数据的教程

版本:mongodb3.2.6 备份格式: /data/mongodb/bin/mongodump -h IP --port 端口号 -u 用户 -p 密码-d 数据库名-o 存储路径 恢复格式: /mnt/mongodb/bin/mongorestore -h IP --port 端口号 -u 用户名-p密码  -d 数据库名 备份的文件夹名/* 注意,如果mongodb开启了认证登录,那么需要加参数--authenticationDatabase=admin, 因为笔者使用的mongodb开