#Btrfs 单分区独立备份/克隆


sudo rsync -av --progress --ignore-errors /media/kapokf/SHARE/roms/ /media/kapokf/ROMS11/



sudo rsync -av --progress --no-perms --no-owner --no-group /media/kapokf/SHARE/roms/ /media/kapokf/ROMS11/

====================================================================================================

# 两条 rsync 核心区别逐条拆解
源目录:`/media/kapokf/SHARE/roms/`
目标目录:`/media/kapokf/ROMS11/`

## 第一条
```bash
sudo rsync -av --progress --ignore-errors 源/ 目标/
```
### 参数解释
1. `-a` = 归档模式,等价 `-rlptgoD`
   - r:递归目录
   - l:复制软链接
   - p:保留**文件权限**(rwx读写执行权限)
   - t:保留文件修改时间戳
   - g:保留文件所属**用户组**
   - o:保留文件**所有者**(UID用户名)
   - D:保留设备特殊文件
2. `-v` 打印详情;`--progress` 实时进度条
3. `--ignore-errors`:遇到无法读取、权限损坏、特殊报错文件,跳过不中断整体复制

### 特点
完整复刻源文件全部属性:权限、归属用户、用户组、时间、链接全部原样照搬。
适合:两块同格式Btrfs分区,硬盘长期本地使用,需要完整保留文件系统权限。

---

## 第二条
```bash
sudo rsync -av --progress --no-perms --no-owner --no-group 源/ 目标/
```
在前一条基础上新增三个禁用参数:
- `--no-perms`:**不保留文件权限**,目标文件直接使用默认权限
- `--no-owner`:**不保留原文件所有者UID**
- `--no-group`:**不保留原文件所属GID用户组**

### 特点
只复制文件内容、目录结构、修改时间;丢弃所有权限、归属人信息。
适合:移动硬盘、U盘、跨系统存储,外接盘挂载后UID/GID不匹配,避免出现大量权限报错、文件打不开。

---

# 关键对比表格
| 行为 | 第一条命令 | 第二条命令 |
|------|------------|------------|
| 复制文件内容/文件夹结构 | ✅ 保留 | ✅ 保留 |
| 文件修改时间戳 | ✅ 保留 | ✅ 保留 |
| 软链接 | ✅ 保留 | ✅ 保留 |
| 文件读写执行权限 | ✅ 原样复制 | ❌ 不保留,使用默认权限 |
| 文件归属用户(owner) | ✅ 原样复制 | ❌ 丢弃 |
| 文件归属用户组(group) | ✅ 原样复制 | ❌ 丢弃 |
| 报错处理 | 损坏文件自动跳过 | 遇到权限文件不会因UID不匹配报错 |

# 你的场景怎么选(Batocera roms游戏分区)
1. 源和目标都是本机Ubuntu内置Btrfs硬盘、长期本地使用 → 用**第一条**,完整保留权限,模拟器运行无异常
2. 复制到移动硬盘、外接存储、以后插别的电脑使用 → 用**第二条**,防止不同系统UID不一致导致ROM读取权限异常、游戏黑屏打不开

# 补充小提示
两条命令都不带 `--ignore-errors`,如果你外接盘有损坏隐藏文件容易复制中断,可以把两条参数合并成最优版本:
```bash
sudo rsync -av --progress --ignore-errors --no-perms --no-owner --no-group /media/kapokf/SHARE/roms/ /media/kapokf/ROMS11/
```

============================================
# 再梳理为什么只有 btrfs send/receive
1. partclone/再生龙/GXDE:区块级备份,镜像写死原分区最大块地址,目标分区更小必然越界损坏,无解;
2. fsarchiver:无图形界面,btrfs 多层子卷容易丢数据,不适合大量ROM;
3. btrfs send/receive:**只导出文件+子卷数据流,完全不绑定原物理分区尺寸**
- 源分区128G,实际文件50G;
- 目标64G空白btrfs分区直接还原,不会损坏、自动占满全部空间;
- Ubuntu系统自带,不需要安装任何额外程序,不用LiveU盘。

# 完整可直接复制的备份&恢复流程(适配你的ROM分区)
## 一、备份流程(生成可长期存放的压缩备份文件)
```bash
# 1. 创建临时目录存放只读快照(防止备份时文件变动)
sudo mkdir -p /mnt/tmp

# 2. 对ROM分区创建只读快照(替换成你的源分区挂载路径)
sudo btrfs subvolume snapshot -r /media/kapokf/SHARE/roms /mnt/tmp/roms-snap

# 3. 导出压缩备份到移动硬盘,替换路径为你的外置存储
sudo btrfs send /mnt/tmp/roms-snap | gzip -9 > /media/你的移动硬盘挂载名/roms_backup.gz

# 4. 备份完成后删除临时快照释放空间
sudo btrfs subvolume delete /mnt/tmp/roms-snap
```

## 二、恢复流程(还原到更小容量的新Btrfs分区)
```bash
# 1. 格式化新分区(替换/dev/sdc2为你的目标分区,谨慎操作!会清空全部数据)
sudo mkfs.btrfs /dev/sdc2

# 2. 创建挂载点并挂载新分区
sudo mkdir -p /mnt/target
sudo mount /dev/sdc2 /mnt/target

# 3. 解压备份并完整还原所有子卷、文件属性、压缩配置
gzip -dc /media/你的移动硬盘挂载名/roms_backup.gz | sudo btrfs receive /mnt/target
```

## 三、恢复完成校验
执行这条查看目标分区全部空间是否自动识别完整64G,无需手动扩容:
```bash
df -h /mnt/target
```

# 总结最终方案取舍
1. 想要图形化工具、能跨大小分区恢复:目前Ubuntu 24.04没有稳定可用的,所有图形备份工具底层都是partclone,有分区大小硬限制;
2. 你的核心需求(btrfs、大分区备份→小分区恢复、不损坏、存档镜像):**唯一稳定方案就是 btrfs send/receive 命令行**,无安装门槛、无底层损坏bug,专门为btrfs文件系统设计。



=========================================================
sudo cp -r /media/kapokf/SHARE/roms/* /media/kapokf/ROMS11/


#Btrfs **单分区独立备份/克隆**,不是只能dd整盘
你觉得工具难用,是因为两点:
1. GParted图形复制分区**底层依赖partclone.btrfs**,很多人没装配套包导致失效;
2. Btrfs有**子卷、快照**专属原生工具(btrfs send/receive),比通用分区工具效率高得多,只是需要终端操作;
3. 再生龙Clonezilla原生完整支持btrfs分区,不是不好用,必须用**LiveU盘启动**,不能在正在挂载的系统里直接跑。

## 一、图形化分区克隆工具(类似EXT4磁盘工具一键复制分区)
### 1. GParted(Ubuntu自带图形分区工具)
支持单独复制Btrfs分区,操作逻辑和EXT4完全一样:
1. 安装依赖(关键!不装会复制失败)
```bash
sudo apt update
sudo apt install gparted partclone.btrfs
```
2. 操作流程(必须LiveU盘启动,不能复制已挂载分区)
- 右键源Btrfs分区 → **复制**
- 选中目标硬盘未分配空间 → 右键**粘贴**
- 自动调用`partclone.btrfs`,只拷贝已占用区块,不是dd全盘扇区,保留Btrfs所有特性(压缩、子卷、CoW)
缺点:无法制作**离线镜像文件**,只能分区对分区实时克隆。

### 2. 国产GXDE备份工具(深度系图形化,最简单)
完整可视化,支持**Btrfs分区打包成镜像文件、分区还原**,和Windows Ghost逻辑一致:
- 功能:分区备份成镜像、镜像还原到任意分区、磁盘克隆
- 适配Ubuntu可直接安装deb,不用折腾命令行;
- 优势:自动识别btrfs子卷结构,不用手动处理快照,适合不想敲终端的场景。



## 二、通用命令行分区镜像工具(打包离线镜像,可存U盘备用)
### 1. partclone.btrfs(GParted底层核心,对标EXT4的partclone.ext4)
专门给Btrfs做分区镜像,只拷贝已用数据,体积远小于dd整盘镜像:
- 备份分区为镜像文件:
```bash
sudo partclone.btrfs -c -s /dev/sda3 -o /media/kapokf/backup/btrfs_part.img
```
- 镜像还原到新分区:
```bash
sudo partclone.btrfs -r -s /media/kapokf/backup/btrfs_part.img -o /dev/sdb3
```
### 2. fsarchiver(压缩分区镜像,节省存储空间)
支持btrfs,镜像自带高压缩,适合大量ROM/数据分区备份:
```bash
# 备份分区到压缩镜像
sudo fsarchiver savefs /backup/data.fsa /dev/sda3
# 还原镜像
sudo fsarchiver restfs /backup/data.fsa dest=/dev/sdb3
```

## 三、Btrfs原生最优方案(send/receive,唯一保留压缩/快照/去重特性)
这是Btrfs专属,**效率碾压所有通用分区工具**,完美适配你存模拟器ROM的场景:
原理:先给分区创建**只读快照**,再用`btrfs send`导出流,`receive`写入目标分区,完整保留透明压缩、子卷、文件块共享,增量备份只传修改数据。
### 单分区完整迁移命令
```bash
# 1. 挂载源盘、目标盘
sudo mount /dev/sda3 /mnt/src
sudo mount /dev/sdb3 /mnt/dst

# 2. 创建只读快照(保证数据一致性)
sudo btrfs subvolume snapshot -r /mnt/src /mnt/src/@backup_snap

# 3. 完整迁移分区所有数据
sudo btrfs send --compressed-data /mnt/src/@backup_snap | sudo btrfs receive /mnt/dst
```
优势:
1. 开启zstd压缩的分区,传输时不解压,省大量读写速度;
2. 支持增量备份,第二次只拷贝改动文件;
3. 不丢失Btrfs所有独有空间优化功能(EXT4工具做不到)。

配套自动化工具:**btrbk**,一键定时快照+增量备份,不用手动写脚本,适合长期批量备份ROM库。

## 四、再生龙Clonezilla完全支持Btrfs分区(你觉得难用是操作方式错了)
1. 必须做Clonezilla Live启动盘启动,**不能在正在运行的Ubuntu系统内直接打开**;
2. 两种模式:
- `device-image`:把单个Btrfs分区打包成镜像文件存U盘;
- `device-device`:分区直接对拷,只复制已占用区块;
3. 底层自动调用partclone.btrfs,原生识别Btrfs子卷、压缩,不会降级成dd全盘拷贝。

## 五、对比dd全盘克隆的劣势(为什么不推荐你只用dd)
1. dd是**扇区逐字节复制**,不管分区只用了100G还是1T,全盘大小全部拷贝,速度慢、镜像体积巨大;
2. dd拷贝后目标分区大小必须和源盘完全一致,无法缩容扩容;
3. 通用分区工具/原生send/receive只拷贝已占用文件,目标分区可大于/小于源盘,灵活很多。

## 六、结合你的使用场景(大量ROM模拟器分区)推荐方案
1. 偶尔一次性分区克隆、想要图形界面:GXDE备份工具 / Live GParted;
2. 打包离线镜像存U盘备用:partclone.btrfs / fsarchiver;
3. 经常复制、定期增量备份、追求空间效率:btrfs send/receive(最优);
4. 多机器批量部署分区镜像:Clonezilla Live再生龙。

简单总结:Btrfs不存在“只能整盘dd”的限制,只是它多了一层子卷/快照底层逻辑,图形工具需要补装依赖,原生终端工具功能更强;EXT4工具简单是因为文件系统结构极简,没有高级特性需要适配。





刀神道传奇-商品自动发货系统

联系我们 订单查询