一、dd
- 功能:dd命令的功能很多。可以用来制作文件。也可以用来对磁盘设备进行备份
- 格式:
dd if="input_file" of="output_file" [bs="block_size"] [count="number"]
- 相关选项与参数:
- if:后面接输入文件,也可以为设备
- of:后面接输出文件,也可以为设备
- bs:设置一个block(扇区)大小,若未指定默认是512B
- count:有多少个bs的意思
- dd特征:
- dd可以用于文件/设备之间的相关备份,也可以用来新建文件
- bs与count选项:dd这个命令可以读取磁盘设备的内容(几乎是直接读取扇区)来进行备份,因此有bs与count这两个选项
- 将一个磁盘设备备份成为一个文件时:因为dd默认是一个一个扇区去读写的,所以备份时没有使用到的扇区也会被写入备份文件中,因此产生的备份文件就会变得跟原本的磁盘一模一样大,不会像xfsdump等文件系统命令一样只使用到部分数据
- 将一个硬盘设备备份到另一个硬盘设备时:新的硬盘/分区不需要格式化,因为dd这个命令直接将硬盘分区的扇区数据直接复制过去,连同超级区块、启动扇区、元数据、文件系统、MBR与分区表格式通通都复制过去(因此两块硬盘/分区都是一模一样的)
演示案例
- 案例①:使用dd新建一个文件。在/boot目录下新建一个testing.img文件,每个bs的大小为1M,总大小为10M。(/dev/zero为/dev下一个一直生成0的设备)
dd if=/dev/zero of=/boot/testing.img bs=1M count=10
- 命令下面输出信息的含义:
- 10485760 bytes:代表文件有10485760字节。
- 10+0:代表有10个block和0个未满1M大小的block(因为指定了bs,所以每个block大小为1M)
- 案例②:将/etc/passwd备份成为一个/tmp目录下的passwd.back文件
dd if=/etc/passwd of=/tmp/passwd.back
- 命令下面输出信息的含义:
- 1982 bytes:代表文件有1982字节。
- 3+1:代表有3个block和1个未满512b大小的block(因为没有指定bs大小,所以一个block的大小为512b)
- 案例③:将整个/boot文件系统通过dd命令备份成为/tmp下的一个sda1.img文件。因为/boot所在磁盘为/dev/sda1,所有if=/dev/sda1设备
dd if=/dev/sda1 of=/tmp/sda1.img
- 案例④:将一个Linux系统iso镜像文件备份到一个USB中,然后将这个USB作为系统启动设备
- 假设我的USB设备为/dev/vda,镜像文件为system.iso
- 第一步:将iso文件备份到/dev/vda中
dd if=/tmp/system.iso of=/dev/vda
- 第二步:将/dev/vda挂载到/mnt。挂载之后,USB就可以作为系统的启动盘
mount /dev/vda /mnt
- 案例⑤:将一个硬盘分区完全地复制到另一个硬盘分区下
- 假设我们有一个已经有了一个/dev/vda2分区,我们在/dev/sda硬盘上划分出一个/dev/sda2分区(该分区一定不能比/dev/vda2分区小),将/dev/vda2分区直接复制到/dev/sda2上
- 第一步:使用fdisk命令划分出一个新的分区
fdisk /dev/sda
后续操作查看分区操作
- 第二步:使用dd命令将/dev/vda2复制到/dev/sda2中
dd if=/dev/vda2 of=/dev/sda2
- 第三步:复制完之后,清理一下/dev/sda2的一堆log
xfs_repair -L /dev/sda2
- 第四步:因为dd复制时,连同磁盘的UUID也复制过去,所以还要使用uuidgen产生一个新的UUID,并将新的UUID赋予给/dev/sda2
//产生一个新的UUID
uuidgen
//将上面产生的新的UUID给/dev/sda1
xfs_admin -U 新的UUID /dev/sda1
二、cpio
待续
- 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。