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 <目標文件類型> <源文件> <目標文件>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章