现在我新建了一个img镜像文件名字叫hello.img,然后用fdisk工具给这个镜像文件进行分区。
然后将数据保存在分区里面,再卸载镜像文件。
可以用fdisk的a指令指定分区引导。
1.新建img文件
我这里新建一个7000Mb的名为hello.img的文件。
sudo dd if=/dev/zero of=hello.img bs=1M count=7000
2.对新建文件进行分区
sudo chmod 777 hello.img
sudo fdisk hello.img
这里输入n进行分区,两个区块为1kb。
所以1M为1024*2个区块,1G为1024*1024*2个区块。
然后输入a,再输入1,将分区1设为引导分区。
3. 建立回环设备与img分区的映射
sudo losetup -f //查看空闲loop设备,我这里空闲设备为:/dev/loop21
sudo losetup /dev/loop21 hello.img //建立img文件与回环设备的连接
sudo kpartx -av /dev/loop21 //将img文件分区链接到回环设备
sudo mkfs.vfat /dev/mapper/loop21p1 //格式化img的第一个分区为vfat格式
sudo mkfs.ext4 /dev/mapper/loop21p2 //格式化img的第二个分区为ext4格式
mkdir test_img //新建一个文件夹作为挂载点
sudo mount /dev/mapper/loop21p1 ./test_img //挂载img的第一个分区到test_img文件夹
sudo cp -rdf /media/zhitong/boot/* ./test_img //将内存卡第一个分区root分区文件强制递归复制到test_img文件夹下
sudo umount /dev/mapper/loop21p1 //卸载img的第一个分区
sudo mount /dev/mapper/loop21p2 ./test_img //挂载img的第二个分区到test_img文件夹
sudo cp -rdf /media/zhitong/rootfs/* ./test_img //将内存卡第二个分区rootfs分区所有文件强制递归复制到test_img文件夹下
sudo umount /dev/mapper/loop21p2 //卸载img的第二个分区
sudo kpart -dv /dev/loop21 //卸载img文件的分区映射
sudo losetup -d /dev/loop21 //删除img文件与loop回环设备的映射关系
然后这个内存卡里面的boot和root文件系统就已经备份到了img文件的两个分区了。
参考链接:
0.[镜像]镜像操作losetup - aaronGao - 博客园
1.linux 制作分区镜像img文件_墨1024-CSDN博客
2.ubuntu利用dd命令备份系统_道友请留步-CSDN博客
3.对比cp和scp命令 将数据从一台linux服务器复制到另一台linux服务器 - 冒雨ing - 博客园