使用partclone.ext4对系统进行镜像和还原,ubuntu+arm64

1.概要

2.内容

在Ubuntu ARM64系统上使用partclone.ext4进行镜像备份和还原的步骤如下:


1. 安装partclone

sudo apt update
sudo apt install partclone

2. 备份系统分区(镜像)

语法:
sudo partclone.ext4 -c -s /dev/sdXn -o /path/to/backup.img
  • -c: 创建镜像(copy)
  • -s /dev/sdXn: 源分区(如/dev/sda1
  • -o: 输出镜像文件路径
示例:

sudo partclone.ext4 -c -s /dev/sda1 -o /mnt/backup/system_backup.img


3. 还原系统分区

语法:
sudo partclone.ext4 -r -s /path/to/backup.img -o /dev/sdXn
  • -r: 还原镜像(restore)
  • -s: 镜像文件路径
  • -o: 目标分区(如/dev/sda1
示例:
sudo partclone.ext4 -r -s /mnt/backup/system_backup.img -o /dev/sda1

4. 关键注意事项

  1. 设备路径确认
    使用lsblkfdisk -l确认分区路径(如/dev/sda1),避免误操作。

  2. 目标分区未挂载
    还原前确保目标分区未挂载:

    sudo umount /dev/sdXn
  3. 文件系统大小匹配
    如果目标分区小于备份分区,需先调整分区大小(使用partedgparted)。

  4. 校验和验证(可选)
    生成校验文件:

    sudo partclone.ext4 -c -s /dev/sda1 -o backup.img --checksum_file=backup.img.sha256

    验证镜像:

    sudo partclone.ext4 -v -s backup.img --checksum_file=backup.img.sha256
  5. 压缩备份(可选)
    使用-z压缩镜像(减少空间占用,但增加CPU负载):

    sudo partclone.ext4 -c -s /dev/sda1 -o backup.img.gz -z 9

5. 自动化脚本示例

#!/bin/bash
# 定义变量
SOURCE_PARTITION="/dev/sda1"
BACKUP_DIR="/mnt/backup"
BACKUP_FILE="$BACKUP_DIR/system_backup_$(date +%Y%m%d).img"


# 创建备份
sudo partclone.ext4 -c -s "$SOURCE_PARTITION" -o "$BACKUP_FILE" --checksum_file="$BACKUP_FILE.sha256"


# 验证备份
if sudo partclone.ext4 -v -s "$BACKUP_FILE" --checksum_file="$BACKUP_FILE.sha256"; then
    echo "备份成功且校验通过!"
else
    echo "备份失败或校验不通过!"
exit 1
fi

6. 恢复后操作

  1. 调整文件系统大小(如果目标分区更大):
    sudo resize2fs /dev/sdXn
  2. 更新引导配置(如使用GRUB):
    sudo update-grub

常见问题

  • Q: 恢复后系统无法启动?
    • 确保引导分区(如/dev/sda1)正确恢复。
    • 检查文件系统UUID是否冲突(使用blkid查看)。
  • Q: 镜像文件损坏?
    • 使用--checksum验证。
    • 定期测试镜像恢复流程。

通过以上步骤,您可以在Ubuntu ARM64系统上安全地使用partclone.ext4进行镜像备份和还原。操作前请务必确认设备路径,并在测试环境中验证流程!

3.关联链接

4.关联知识 

1.设备布局

topeet@topeet:~$ lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda            8:0    1 29.3G  0 disk 
└─sda1         8:1    1 29.3G  0 part /media/topeet/433C-3B14
mmcblk1      179:0    0 29.1G  0 disk 
├─mmcblk1p1  179:1    0    4M  0 part 
├─mmcblk1p2  179:2    0    4M  0 part 
├─mmcblk1p3  179:3    0   64M  0 part 
├─mmcblk1p4  179:4    0  128M  0 part 
├─mmcblk1p5  179:5    0   32M  0 part 
└─mmcblk1p6  179:6    0 28.9G  0 part /
mmcblk0      179:32   0 28.9G  0 disk 
├─mmcblk0p1  179:33   0    4M  0 part 
├─mmcblk0p2  179:34   0    4M  0 part 
├─mmcblk0p3  179:35   0   64M  0 part 
├─mmcblk0p4  179:36   0  128M  0 part 
├─mmcblk0p5  179:37   0   32M  0 part 
└─mmcblk0p6  179:38   0 28.7G  0 part 
mmcblk0boot0 179:64   0    4M  1 disk 
mmcblk0boot1 179:96   0    4M  1 disk 
zram0        254:0    0    0B  0 disk

根据您的设备布局(lsblk 输出),以下是针对 Ubuntu ARM64 系统的 partclone.ext4 镜像与还原方案:


1. 确认分区信息

  • 当前系统分区/dev/mmcblk1p6(挂载在 /,28.9G)
  • 外部存储/dev/sda1(挂载在 /media/topeet/433C-3B14,29.3G)

2. 备份系统分区(镜像)

场景:备份根分区到外部存储

# 卸载外部存储(如果已挂载)
sudo umount /dev/sda1 || true  # 忽略未挂载的错误

# 创建备份镜像
sudo partclone.ext4 -c -s /dev/mmcblk1p6 \
  -o /media/topeet/433C-3B14/system_backup.img \
  --checksum_file=/media/topeet/433C-3B14/system_backup.img.sha256
注意事项:
  • 风险:备份正在运行的根分区可能导致镜像不一致,建议通过以下方式降低风险:
    1. 进入 Recovery Mode(重启时按 ESC 或 Shift 键选择)。
    2. 挂载分区为只读:sudo mount -o remount,ro /dev/mmcblk1p6
    3. 执行备份后恢复为可写:sudo mount -o remount,rw /dev/mmcblk1p6

3. 还原系统分区

场景:将镜像还原到目标分区(如 /dev/mmcblk0p6

# 卸载目标分区(如果已挂载)
sudo umount /dev/mmcblk0p6 || true

# 还原镜像
sudo partclone.ext4 -r -s /media/topeet/433C-3B14/system_backup.img \
  -o /dev/mmcblk0p6

# 验证镜像完整性
if sudo partclone.ext4 -v -s /media/topeet/433C-3B14/system_backup.img \
     --checksum_file=/media/topeet/433C-3B14/system_backup.img.sha256; then
  echo "还原成功且校验通过!"
else
  echo "还原失败或校验不通过!"
  exit 1
fi

4. 还原后操作

  1. 调整文件系统大小(如果目标分区更大):
    sudo resize2fs /dev/mmcblk0p6
  2. 更新引导配置(如果目标分区是新的根分区):

    sudo mount /dev/mmcblk0p6 /mnt
    sudo chroot /mnt
    update-grub
    exit
  3. 修改启动顺序(如果需要从新分区启动):
    • 进入 U-Boot 或 BIOS,调整启动设备为 /dev/mmcblk0

5. 完整脚本示例

#!/bin/bash
# 定义变量
SOURCE_PARTITION="/dev/mmcblk1p6"
BACKUP_DEVICE="/dev/sda1"
BACKUP_DIR="/media/topeet/433C-3B14"
BACKUP_FILE="$BACKUP_DIR/system_backup_$(date +%Y%m%d).img"
TARGET_PARTITION="/dev/mmcblk0p6"

# 卸载外部存储
sudo umount "$BACKUP_DEVICE" || true

# 创建备份
sudo partclone.ext4 -c -s "$SOURCE_PARTITION" \
  -o "$BACKUP_FILE" \
  --checksum_file="$BACKUP_FILE.sha256"

# 验证备份
if sudo partclone.ext4 -v -s "$BACKUP_FILE" \
     --checksum_file="$BACKUP_FILE.sha256"; then
  echo "备份成功且校验通过!"
else
  echo "备份失败或校验不通过!"
  exit 1
fi

# 卸载目标分区(如果已挂载)
sudo umount "$TARGET_PARTITION" || true

# 还原镜像
sudo partclone.ext4 -r -s "$BACKUP_FILE" -o "$TARGET_PARTITION"

# 调整文件系统
sudo resize2fs "$TARGET_PARTITION"

关键提示

  1. 分区对齐:确保目标分区(如 /dev/mmcblk0p6)已正确创建(使用 fdisk 或 parted)。
  2. 启动测试:还原后建议通过 Live 环境 验证目标分区是否可启动。
  3. 数据安全:操作前务必确认设备路径,避免误覆盖关键分区。

如果有进一步需求(如自动化备份到网络存储),请提供更多细节!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值