迁移darktable编辑数据需同步xmp侧车文件、library.db数据库及配置文件,修复路径映射并可选启用xmp-only模式,最后通过参数比对与哈希验证确保编辑完全还原。

如果您在旧机器上使用darktable完成大量RAW照片的编辑并生成XMP侧车文件,迁移到新机器后发现调整未生效或元数据丢失,则很可能是XMP文件未同步、路径映射错误或数据库未正确迁移。以下是解决此问题的步骤:
一、确认XMP侧车文件是否随照片一并迁移
XMP文件是darktable保存非破坏性编辑的核心载体,必须与原始RAW文件保持同目录且同名(如IMG_1234.RAW对应IMG_1234.RAW.xmp)。若仅复制RAW文件而遗漏XMP,则所有编辑历史将不可见。
1、在旧机器上打开照片所在文件夹,启用“显示隐藏文件”和“显示文件扩展名”选项。
2、检查每个RAW文件旁是否存在对应名称的.xmp文件,确保其修改时间与最后一次编辑时间一致。
3、使用rsync或robocopy等工具执行全量同步时,需明确包含*.xmp匹配规则,避免过滤掉侧车文件。
4、迁移至新机器后,在文件管理器中逐一对比RAW与XMP文件数量是否一致,不一致即表明XMP丢失,必须重新同步。
二、迁移darktable本地数据库与配置文件
darktable除XMP外,还依赖library.db(存储收藏、评分、标签、历史快照)和darktablerc(界面布局、模块默认值、GPU设置)维持完整工作状态。缺失任一文件都将导致元数据断连或功能降级。
1、定位并打包以下三个关键路径:
— ~/.config/darktable/darktablerc
— ~/.local/share/darktable/library.db
— ~/.local/share/darktable/styles/(含自定义预设)
2、将压缩包解压至新机器对应路径,确保用户对~/.local/share/darktable/拥有读写权限:chmod -R 755 ~/.local/share/darktable/
3、启动darktable前,禁止先打开任何照片或导入文件夹,否则将触发空库初始化,覆盖已迁移的library.db。
三、修复XMP与数据库路径映射不一致
当照片存储路径在新旧机器间发生变更(例如从/home/user/Pictures/变为/mnt/data/photos/),darktable无法自动识别原有XMP文件位置,需手动刷新路径映射关系。
1、启动darktable后进入lighttable视图,按Ctrl+P打开首选项。
2、切换至“核心选项”页签,勾选“启用XMP侧车文件支持”并确认“写入XMP侧车文件”处于启用状态。
3、在lighttable中全选已导入的照片,右键选择“重新加载元数据”,强制darktable扫描当前目录下所有.xmp文件并重建关联。
4、若仍显示“无编辑历史”,则执行路径重映射:darktable-cli --library ~/.local/share/darktable/library.db --update-path "/old/path" "/new/path"
四、启用XMP-only工作流避免数据库依赖
为彻底规避数据库迁移风险,可切换至纯XMP模式:所有编辑仅写入侧车文件,不依赖library.db。该模式下,只要RAW与XMP共存,即可在任意机器上无缝复现全部调整。
1、在旧机器darktable首选项中,进入“核心选项”,取消勾选“启用图像库”。
2、重启darktable,此时界面顶部将显示“XMP-only mode”提示条。
3、对所有待迁移照片执行一次“导出XMP”操作(右键→“写入XMP侧车文件”),确保最新编辑已落盘。
4、迁移时仅需复制RAW文件及其同名.xmp文件,新机器无需安装darktable也可用ExifTool等工具验证XMP内容完整性。
五、验证迁移结果的最小可行测试
完成上述任一方法后,必须通过原子化验证确认编辑数据真实可用,而非仅界面显示正常。
1、在新机器上选取一张含复杂调整(如Filmic RGB+色彩校准+局部蒙版)的照片。
2、双击进入暗房视图,依次展开右侧各模块,确认参数滑块位置与旧机器完全一致。
3、导出一张JPEG预览图,用diff工具比对新旧机器导出结果的像素哈希值(如md5sum),哈希一致才证明编辑逻辑100%还原。
4、打开终端执行:exiftool -xmp:all -s3 /path/to/photo.RAW.xmp | head -n 20,检查输出中是否存在darktable:history字段及有效JSON数组内容。











