神奇的ghost的原理是什么呢?不就是数据复制吗?
Linux下的dd命令不就是最强大的数据复制工具!
查看磁盘分区情况
lsblk
查询硬盘使用情况
df -h
为避免网络中断,以screen 窗口运行,创建后台执行窗口 恢复后台窗口 结束后台窗口
screen -S dd screen -r dd screen -S dd -X quit
多个同名的screen会话,可以执行:screen -ls 查看对应会话的session_id,然后使用screen -D -r + session_id 进行恢复。
screen -D -r session_id
退出指定会话 screen -X -S + session id quit
-u,让start和end中数字的单位是512字节,也就是一个sector扇区的大小,
示例:(红色字体即 fdisk命令中最大的end数 )
fdisk -u -l /dev/sdb
root@22-4-200537:~# fdisk -u -l /dev/sdb
Disk /dev/sdb: 47 GiB, 50465865728 bytes, 98566144 sectors
Disk model: BlockVolume
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: C955719C-61F9-47FC-AFBC-6B8424F213B9
Device Start End Sectors Size Type
/dev/sdb1 206848 98566110 98359263 46.9G Linux filesystem
/dev/sdb15 2048 204800 202753 99M EFI System
镜像的命令格式说明
执行:
dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda of=/root/ubuntu.img
或使用 dd 和 gzip 生成压缩的镜像文件的执行命令:
这样,就可以把需要的分区数据全部copy到ubuntu.img或ubuntu.img.gz文件中,
还原用LiveCD引导进入打开命令行,
创建挂载目录把和sda挂载到LIVE系统下
mkdir /mnt/sda
mkdir /mnt/sdb
挂载成功
mount /dev/sdb1 /mnt/sdb
mount /dev/sda1 /mnt/sda
fdisk -u -l /dev/sdb
root@22-4-200537:~# fdisk -u -l /dev/sdb
Disk /dev/sdb: 47 GiB, 50465865728 bytes, 98566144 sectors
Disk model: BlockVolume
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: C955719C-61F9-47FC-AFBC-6B8424F213B9
Device Start End Sectors Size Type
/dev/sdb1 206848 98566110 98359263 46.9G Linux filesystem
/dev/sdb15 2048 204800 202753 99M EFI System
执行:
dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda of=/root/ubuntu.img
或使用 dd 和 gzip 生成压缩的镜像文件的执行命令:
dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda | gzip -6 > /root/ubuntu.img.gz
这样,就可以把需要的分区数据全部copy到ubuntu.img或ubuntu.img.gz文件中,
还原用LiveCD引导进入打开命令行,
备份系统盘镜像.img.gz到/root目录下面,压缩和不压缩的执行示例命令:
dd的count=参数98566120(只要比上面的加1就可以了,这里加了个10)
未压缩:
dd bs=512 count=98566120 if=/dev/sdb of/=/root/ubuntu.img.gz
dd bs=512 count=98566120 if=/dev/sdb of/=/root/ubuntu.img.gz
压缩:
dd bs=512 count=98566120 if=/dev/sdb | gzip -6 > /root/ubuntu.img.gz
dd bs=512 count=98566120 if=/dev/sdb | gzip -6 > /root/ubuntu.img.gz
gzip参数:
-c 表示输出到stdout
-d 表示解压缩
-1 表示最快压缩
-9 表示最好压缩
默认使用的是-6压缩级别。
注意:
不要直接在计算机上用本地磁盘启动系统后执行dd命令生成本地磁盘的镜像。而应该使用livecd启动计算机。
因计算机运行时会对系统盘产生大量写操作。 直接对运行中的系统盘生成的镜像,在恢复到其他硬盘上时,很可能会无法启动!
不要直接在计算机上用本地磁盘启动系统后执行dd命令生成本地磁盘的镜像。而应该使用livecd启动计算机。
因计算机运行时会对系统盘产生大量写操作。 直接对运行中的系统盘生成的镜像,在恢复到其他硬盘上时,很可能会无法启动!
未压缩镜像格式还原硬盘:
dd if=/root/ubuntu.img.gz of=/dev/sda
dd if=/root/ubuntu.img.gz of=/dev/sda
压缩镜像还原格式还原硬盘:执行下列命令:
gzip -dc /root/ubuntu.img.gz | dd of=/dev/sdb
创建挂载目录把和sda挂载到LIVE系统下
mkdir /mnt/sda
mkdir /mnt/sdb
挂载成功
mount /dev/sdb1 /mnt/sdb
mount /dev/sda1 /mnt/sda
取消挂载
umount mnt/sdb
查看dd备份的进度
查看dd备份的进度
重新打开一个Shell,然后执行如下命令,即可输出一次进度信息
killall -s SIGUSR1 dd
killall -s SIGUSR1 dd
重新打开一个Shell,然后执行如下命令,即可每3秒输出一次进度信息
watch -n 3 pkill -USR1 -x dd