【Linux】制作备份Raspberry Pi树莓派SD卡的img映像文件

谢谢博主的分享https://blog.csdn.net/zhufu86/article/details/109962309?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242添加链接描述

方法1执行过程

  1. 备份原分区数据

  2. 删除原分区

  3. 在原分区的起始点上新建分区,使用默认大小(SD卡剩余大小)

  4. 保存分区修改,格式化新分区

  5. 恢复数据

对应的脚本如下

#! /bin/sh

tmproot=$(mktemp -d /tmp/root_XXXXXX)
#未加密前可直接挂载

RootfsBak="rootfs.bak$(date +%Y%m%d%H%M)"
if mount  -t ext4 /dev/mmcblk0p2  $tmproot
then
        #备份分区中的数据
        tar -czf ${RootfsBak}.tar.gz  -C $tmproot/ .
        umount $tmproot
fi

fdisk /dev/mmcblk0   <<EOF
p
d
2
n
p
2
526336
60579839
w
EOF

#格式化映射后的分区

mkfs.ext4 /dev/mmcblk0p2
sync

#挂载映射分区
mount -t ext4 /dev/mmcblk0p2 $tmproot/

#恢复数据
if [ -f ${RootfsBak}.tar.gz ] 
then
        tar -xzf ${RootfsBak}.tar.gz -C $tmproot/
fi

umount $tmproot
rm -rf $tmproot

方法2执行过程

  1. 备份数据,不必须,仅做安全考虑
  2. 重新划分分区(保证分区其实扇区一致)
  3. 使用e2fsck resize2fs工具重写扩展ext4文件系统
    脚本如下

tmproot=$(mktemp -d /tmp/root_XXXXXX)
#未加密前可直接挂载

if mount  -t ext4 /dev/mmcblk0p2  $tmproot
then
        #备份分区中的数据
        RootfsBak="rootfs.bak$(date +%Y%m%d%H%M)"
        tar -czf ${RootfsBak}.tar.gz  -C $tmproot/ .
        umount $tmproot
fi
rm -rf $tmproot


# 这个是从一个32G的sd卡上获取的分区信息,将这个信息导出,用于快速修改分区

cat <<EOF > fdiskscript
label: dos
label-id: 0xab86aefd
device: /dev/mmcblk0
unit: sectors

/dev/mmcblk0p1 : start=        2048, size=      524288, type=c, bootable
/dev/mmcblk0p2 : start=      526336, size=    60579839, type=83
EOF

fdisk /dev/mmcblk0  &>fdisk_sdb.log <<EOF
I
fdiskscript
w
EOF
# 扩展/dev/mmcblk0p2分区上的ext4文件系统
e2fsck -f /dev/mmcblk0p2
resize2fs  /dev/mmcblk0p2
  • 脚本执行前状态
>>> fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 28.9 GiB, 31016878080 bytes, 60579840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xab86aefd

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *      2048   526335   524288  256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      526336 30244830 29718495 14.2G 83 Linux
  • 脚本执行后状态
>>>  fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 28.9 GiB, 31016878080 bytes, 60579840 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x626217d1

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *      2048   526335   524288  256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      526336 60579839 60053504 28.7G 83 Linux

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值