<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="linux系统备份与还原">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2017-04-09 10:20<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
linux系统备份与还原

在使用Ubuntu之前，相信很多人都有过使用Windows系统的经历。如果你备份过Windows系统，那么你一定记忆犹新：首先需要找到一个备份工具(通常都是私有软件)，然后重启电脑进入备份工具提供的软件环境，在这里备份或者恢复Windows系统。Norton Ghost是备份Windows系统时经常使用的备份工具。

在备份Windows系统的时候你可能想过，我能不能把整个C盘都放到一个ZIP文件里去呢。这在Windows下是不可能的，因为在Windows中有很多文件在它们运行时是不允许拷贝或覆盖的，因此你需要专门的备份工具对Windows系统进行特殊处理。

和备份Windows系统不同，如果你要备份Ubuntu系统(或者其它任何Linux系统)，你不再需要像Ghost这类备份工具。事实上，Ghost 这类备份工具对于Linux文件系统的支持很糟糕，例如一些Ghost版本只能完善地支持Ext2文件系统，如果你用它来备份Ext3文件系统，你可能会丢失一些宝贵的数据。

1. 备份系统

我该如何备份我的Ubuntu系统呢？很简单，就像你备份或压缩其它东西一样，使用TAR。和Windows不同，Linux不会限制root访问任何东西，你可以把分区上的所有东西都扔到一个TAR文件里去！

首先成为root用户：
$ sudo su

然后进入文件系统的根目录(当然，如果你不想备份整个文件系统，你也可以进入你想要备份的目录，包括远程目录或者移动硬盘上的目录)：
# cd /

下面是我用来备份系统的完整命令：
# tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /

让我们来简单看一下这个命令：

&ldquo;tar&rdquo;当然就是我们备份系统所使用的程序了。

&ldquo;cvpfz&rdquo;是tar的选项，意思是&ldquo;创建档案文件&rdquo;、&ldquo;保持权限&rdquo;(保留所有东西原来的权限)、&ldquo;使用gzip来减小文件尺寸&rdquo;。

&ldquo;backup.gz&rdquo;是我们将要得到的档案文件的文件名。

&ldquo;/&rdquo;是我们要备份的目录，在这里是整个文件系统。

在档案文件名&ldquo;backup.gz&rdquo;和要备份的目录名&ldquo;/&rdquo;之间给出了备份时必须排除在外的目录。有些目录是无用的，例如&ldquo;/proc&rdquo;、&ldquo; /lost+found&rdquo;、&ldquo;/sys&rdquo;。当然，&ldquo;backup.gz&rdquo;这个档案文件本身必须排除在外，否则你可能会得到一些超出常理的结果。如果不把&ldquo; /mnt&rdquo;排除在外，那么挂载在&ldquo;/mnt&rdquo;上的其它分区也会被备份。另外需要确认一下&ldquo;/media&rdquo;上没有挂载任何东西(例如光盘、移动硬盘)，如果有挂载东西，必须把&ldquo;/media&rdquo;也排除在外。

有人可能会建议你把&ldquo;/dev&rdquo;目录排除在外，但是我认为这样做很不妥，具体原因这里就不讨论了。

执行备份命令之前请再确认一下你所键入的命令是不是你想要的。执行备份命令可能需要一段不短的时间。

备份完成后，在文件系统的根目录将生成一个名为&ldquo;backup.tgz&rdquo;的文件，它的尺寸有可能非常大。现在你可以把它烧录到DVD上或者放到你认为安全的地方去。

在备份命令结束时你可能会看到这样一个提示：'tar: Error exit delayed from previous errors'，多数情况下你可以忽略它。

你还可以用Bzip2来压缩文件，Bzip2比gzip的压缩率高，但是速度慢一些。如果压缩率对你来说很重要，那么你应该使用Bzip2，用&ldquo;j&rdquo;代替命令中的&ldquo;z&rdquo;，并且给档案文件一个正确的扩展名&ldquo;bz2&rdquo;。完整的命令如下：
# tar cvpjf backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys /

2. 恢复系统

在进行恢复系统的操作时一定要小心！如果你不清楚自己在做什么，那么你有可能把重要的数据弄丢，请务必小心！

接着上面的例子。切换到root用户，并把文件&ldquo;backup.tgz&rdquo;拷贝到分区的根目录下。

在Linux中有一件很美妙的事情，就是你可以在一个运行的系统中恢复系统，而不需要用boot-cd来专门引导。当然，如果你的系统已经挂掉不能启动了，你可以用Live CD来启动，效果是一样的。你还可以用一个命令把Linux系统中的所有文件干掉，当然在这里我不打算给出这个命令！

使用下面的命令来恢复系统：

# tar xvpfz backup.tgz -C /

如果你的档案文件是使用Bzip2压缩的，应该用：
# tar xvpfj backup.tar.bz2 -C /

注意：上面的命令会用档案文件中的文件覆盖分区上的所有文件。

执行恢复命令之前请再确认一下你所键入的命令是不是你想要的，执行恢复命令可能需要一段不短的时间。

恢复命令结束时，你的工作还没完成，别忘了重新创建那些在备份时被排除在外的目录：
# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys
等等

当你重启电脑，你会发现一切东西恢复到你创建备份时的样子了！


linux使用dd命令备份系统并制作硬盘镜像(virt-p2v的一种方案)

最好准备一个livecd的U盘，和一个存储备份的移动硬盘。

1、备份

用liveCD开机，

先挂载移动硬盘分区：mount /dev/sdb5 /mnt

然后再备份：dd if=/dev/sdb of=/mnt/sdb_backup.img bs=32M  &amp; pid=$!

注：bs即blocksize，bs根根系统的内存大小和硬盘读写速度而设定， &amp; pid=$!可以显示操作进度

查看进度还可以打开另一个终端窗口输入 sudo watch -n 5 killall -USR1 dd

 

如果希望节省空间

dd if=/dev/sdb | gzip -c  &gt; ~/sdb_backup.img.gz

或者

dd if=/dev/sdb | bzip2 &gt; sdb_backup.img.bz2 

也可以从磁盘到磁盘进行克隆

dd if=/dev/hdb of=/dev/hdd

 

远程备份

利用netcat远程备份

dd if=/dev/hda bs=16065b | netcat &lt; targethost-ip &gt; 1234

在源主机上执行此命令备份/dev/hda

netcat -l -p 1234 | dd of=/dev/hdc bs=16065b

在目的主机上执行此命令来接收数据并写入/dev/hdc

netcat -l -p 1234 | bzip2 &gt; partition.img

netcat -l -p 1234 | gzip &gt; partition.img

以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩，并将备份文件保存在当前目录。

 

2、还原

用liveCD开机，

恢复时同样要先挂载，再恢复：mount /dev/sdb5 /mnt;

dd if=/mnt/sdb_backup.img of=/dev/sda

压缩了的话，用下面这个

gunzip -c ~/sdb_backup.img.gz | dd of=/dev/sdb

或者

bzip2 -dc sdb_backup.img.bz2 | dd of=/dev/sdb

然后再执行（硬盘和硬盘对拷时不需要）

# e2fsck -f /dev/sdb

# resize2fs /dev/sdb

# e2fsck -f /dev/sdb

注：以上操作需要root权限，/dev/sda是硬盘，/dev/sdb5是移动硬盘的某个分区，分区格式正常，且空间充足

 

3. dd的更多用途

备份分区

dd if=/dev/sda1 of=~/partition1.img 

 

备份与恢复MBR分区表

备份磁盘开始的512个字节大小的MBR信息到指定文件：

dd if=/dev/hda of=/root/image count=1 bs=512

count=1指仅拷贝一个块；bs=512指块大小为512个字节。

恢复：

dd if=/root/image of=/dev/had

将备份的MBR信息写到磁盘开始部分。

 

4. 使用dd制作文件夹的img

du -sh originfile //先看看需要制作的源文件夹大小，假如15M

dd if=/dev/zero of=new_img.img bs=1024 count=20000 //生成20M的文件

mkfs.ext3 new_img.img

mount new_img.img /mnt/new

cp originfile /mnt/new -R

umount /mnt/new// new_img.img文件里面就包括了originfile

 

5. OpenStack镜像格式转换

QCOW2（KVM，Xen）   qcow2

QED（KVM）          qed

raw                raw

VDI（VirtualBox）   vdi

VHD（Hyper-V）      vpc

VMDK（VMware）      vmdk

 

安装工具

yum install qemu-img -y

将img格式转换为qcow2 (转换即压缩)

# qemu-img convert -f raw -O qcow2 image.img image.qcow2

qemu-img convert -f &lt;源文件类型&gt; -O &lt;目标文件类型&gt; &lt;源文件&gt; &lt;目标文件&gt;

压缩办法（正常方法）：

qemu-img convert -c -O qcow2 /dev/shm/win.qcow2 /home/soft/kvm/ocr.qcow2

参考：https://blog.csdn.net/wxh0000mm/article/details/121690935


</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
