linux使用dd命令备份系统并制作硬盘镜像(virt-p2v的一种方案)
最好准备一个livecd的U盘,和一个存储备份的移动硬盘。
1、备份
用liveCD开机,
先挂载移动硬盘分区:mount /dev/sdb5 /mnt
然后再备份:dd if=/dev/sdb of=/mnt/sdb_backup.img bs=32M & pid=$!
注:bs即blocksize,bs根根系统的内存大小和硬盘读写速度而设定, & pid=$!可以显示操作进度
查看进度还可以打开另一个终端窗口输入 sudo watch -n 5 killall -USR1 dd
如果希望节省空间
dd if=/dev/sdb | gzip -c > ~/sdb_backup.img.gz
或者
dd if=/dev/sdb | bzip2 > sdb_backup.img.bz2
也可以从磁盘到磁盘进行克隆
dd if=/dev/hdb of=/dev/hdd
远程备份
利用netcat远程备份
dd if=/dev/hda bs=16065b | netcat < targethost-ip > 1234
在源主机上执行此命令备份/dev/hda
netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
在目的主机上执行此命令来接收数据并写入/dev/hdc
netcat -l -p 1234 | bzip2 > partition.img netcat -l -p 1234 | gzip > 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 <源文件类型> -O <目标文件类型> <源文件> <目标文件>
压缩办法(正常方法):
qemu-img convert -c -O qcow2 /dev/shm/win.qcow2 /home/soft/kvm/ocr.qcow2