最好準備一個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 <目標文件類型> <源文件> <目標文件>