# 备份与导入

蛋日提供三类数据流：完整备份、通用导出和分享包导入。不同格式面向不同场景，作用清晰。

## 完整备份 (.cakeday)

`.cakeday` 是蛋日的官方完整备份格式，最适合迁移设备或长期归档。它会保留：

- 好友数据
- 自定义分组
- 高分辨率头像
- 好友级提醒偏移、生日闹钟选择、闹钟铃声、按对方时区提醒与日历同步设置
- 应用级提醒默认值、生日闹钟时间、默认闹钟铃声、主题、显示偏好、详情页额外内容与日期格式设置

这是最接近“完整恢复”的方式。

下载后的 HQ 闹钟音频文件不属于备份内容。它们是设备本地资源，可在闹钟铃声选择器中重新下载。

## 通用导出 (JSON / CSV)

**通用导出 (JSON)** 与 **通用导出 (CSV)** 面向跨平台交换和人工处理场景。它们保留核心字段，例如：

- 姓名
- 分组名称
- 公历或农历标记
- 出生年份、月、日
- 星座
- 备注

这两种格式不包含头像、自定义分组样式、好友级提醒与生日闹钟配置或应用级偏好设置。

## 分享包导入 (.cakeshare)

`.cakeshare` 针对人与人之间的分享做了优化。分享包可以包含好友、头像和分组信息，并支持加密与可选的附加密码。

导入 `.cakeshare` 时，蛋日会进入按好友选择的导入界面。你可以逐条勾选要导入的人，并在导入前查看重复项提示。协议细节请参阅 [CakeShare](/docs/zh-CN/cakeshare) 指南。

## 导入模式

导入 `.cakeday`、JSON 或 CSV 时，蛋日提供两种导入模式：

- **覆盖导入：** 用导入数据替换当前本地数据库。
- **增量导入：** 追加新数据，同时保留现有本地好友。

覆盖导入适合迁移或恢复，增量导入更适合合并新好友。

## iCloud 与覆盖导入

如果设备当前已启用 iCloud 同步，覆盖导入会先完成本地恢复，再暂停 iCloud 同步。这样你就有时间先检查导入结果，再决定何时重新开启同步与合并行为。

这种处理方式更适合高风险的恢复操作，因为云端副本仍可作为回退参考。

## 重复项识别与导入后处理

蛋日在导入合并时会按以下字段进行精确匹配：

- 姓名
- 出生年份
- 日历类型（公历或农历）
- 月、日
- 闰月标志

如果只有出生年份不同，蛋日会把导入项作为单独记录处理，并可能将其标记为需要复核的疑似重复项。

较长的导入过程中，应用会显示明显的进度。导入完成后，蛋日会刷新搜索索引、小组件和相关扩展数据，让新内容可以在各个入口中显示。

## 系统日历同步

蛋日可通过 EventKit 将生日写入系统日历。在好友中启用**同步到系统日历**后，蛋日会为每个未来年份分别创建一个全天日历事件，而不是单个循环事件，并在好友被修改或删除时同步更新这些事件。为每一年创建独立事件可以保证农历生日的准确性，因为它们每年并不会落在同一个公历日期上。
