最近在工作中需要对系统进行备份然后还原至另一个磁盘中,实现系统的备份。使用Liunx系统命令dd刚好可以用来备份和还原系统。
使用dd命令来做系统的备份还原可谓简单粗暴,dd不仅仅只是拷贝数据,连同磁盘分区等信息都可以一并保留。所以只要目标磁盘的空间比原始磁盘的空间大的话,就可以实现整盘的备份。
磁盘备份
可以使用下面命令来将系统保存成一个系统镜像文件1
dd if=/dev/sda of=~/backup.img bs=4M
- if=FILE 待备份磁盘
- of=FILE 目标磁盘或保存的镜像文件
- bs=BYTES 一次读写的字节数
使用这种方式的弊端就是会将整个磁盘进行备份 对于空间上是一种浪费,例如一块儿128G的磁盘实际使用了10G备份出来的镜像文件也是128G,所以对于存储空间会比较浪费,备份时间也会比较长。
所以我们可以在备份的时候对镜像文件进行压缩1
2dd if=/dev/sda | gzip > backup.img.gz
dd if=/dev/sda | bzip2 > backup.img.bz2
这样我们就可以得到压缩后的镜像文件了,但是由于时间可能会比较长,我们还需要看到备份的进度情况1
watch -n 5 killall -USR1 dd
磁盘还原
用备份好的镜像文件可以还原至新的磁盘内1
dd if=~/backup.img of=/dev/sda bs=4M
总结
实际使用来看,使用dd来备份还原系统除了时间就一些外还是十分好用的。唯一的限制就是要求目标磁盘的空间需要大于原始磁盘。目前还没有找到很好的办法对备份出来的镜像进行裁剪,截掉镜像中空的部分。