菜单

备份与恢复

相关源文件

本文档提供了关于备份和恢复Immich实例的全面指南。一个恰当的备份策略至关重要,因为Immich将文件路径存储在数据库中,并且不会扫描库文件夹来更新数据库。如果没有定期备份,即使您仍然拥有原始文件,您也有可能丢失元数据关联。

Immich建议遵循3-2-1备份策略:3份数据副本,存储在2种不同的介质上,其中1份副本存储在异地。有关可作为cron作业运行以实现自动化备份的模板脚本,请参阅模板备份脚本页面。

数据库备份

Immich中的PostgreSQL数据库包含有关资产、用户、相册、面部识别数据和系统设置的所有元数据。此数据库对Immich的功能至关重要。

来源: docs/docs/administration/backup-and-restore.md12-27 docs/docs/administration/backup-and-restore.md45-99

自动数据库备份

默认情况下,Immich会自动创建数据库备份,设置如下:

  • 每天凌晨2:00创建新的备份
  • 保留最近14次备份
  • 将备份存储在 UPLOAD_LOCATION/backups

您可以在管理面板的“系统设置”>“备份”下调整这些设置。

触发手动备份

要触发手动数据库备份

  1. 访问管理作业状态页面
  2. 从右上角打开“创建作业”模态框
  3. 选择“备份数据库”并点击“确认”

将运行一个作业并在配置的位置创建备份。

来源: docs/docs/administration/backup-and-restore.md26-39

手动备份与恢复

手动备份提供了对数据库备份时间和地点的更多控制。

手动备份命令

对于 Linux 系统

对于 Windows 系统(PowerShell)

来源: docs/docs/administration/backup-and-restore.md50-53 docs/docs/administration/backup-and-restore.md72-75

手动恢复命令

对于 Linux 系统

对于 Windows 系统,步骤类似,但使用特定于 PowerShell 的命令。

来源: docs/docs/administration/backup-and-restore.md54-68 docs/docs/administration/backup-and-restore.md76-90

注意:为了使数据库恢复正常工作,需要一个全新的安装,并且在创建Docker容器后Immich服务器从未运行过。如果应用程序已运行,您可能需要删除 DB_DATA_LOCATION 文件夹来完全重置数据库。

警告:请勿直接备份 DB_DATA_LOCATION 文件夹。在数据库运行时这样做可能会导致备份损坏,无法恢复。

来源: docs/docs/administration/backup-and-restore.md22-24 docs/docs/administration/backup-and-restore.md95-99

文件系统备份

Immich在文件系统中存储两种内容:

  1. 原始、未修改的资产(照片和视频)
  2. 生成的内容(缩略图、转码视频)

来源: docs/docs/administration/backup-and-restore.md102-142 docs/docs/administration/backup-and-restore.md178-194

资产类型和存储位置

文件系统结构取决于您是否启用了存储模板功能

当存储模板关闭时(默认)

  • 通过Web、移动端和CLI上传的原始资产: UPLOAD_LOCATION/upload/<userID>/
  • 用户个人资料图片: UPLOAD_LOCATION/profile/<userID>/
  • 缩略图和预览: UPLOAD_LOCATION/thumbs/<userID>/
  • 转码视频: UPLOAD_LOCATION/encoded-video/<userID>/

注意:对于新安装的1.92.0或更高版本, UPLOAD_LOCATION/library 文件夹默认不使用。它仅在激活存储模板引擎时使用。

当存储模板开启时

  • 原始资产: UPLOAD_LOCATION/library/<userID 或 StorageLabel>/
  • 其他位置与上方相同
  • 通过移动端上传的文件在移动到库文件夹之前,会临时存储在 UPLOAD_LOCATION/upload/<userID>/

来源: docs/docs/administration/backup-and-restore.md119-167 docs/docs/administration/backup-and-restore.md175-204

为了进行全面备份,建议备份整个 UPLOAD_LOCATION 目录。但是,如果空间有限,包含原始内容的最关键文件夹是

  1. UPLOAD_LOCATION/library (当存储模板开启时)
  2. UPLOAD_LOCATION/upload (当存储模板关闭时)
  3. UPLOAD_LOCATION/profile

如果您选择仅备份这些关键文件夹,恢复后您需要通过管理界面运行相应的作业来重新生成缩略图和转码视频。

警告:请勿直接修改这些文件夹中的文件。所有对资产的交互都应通过Immich的Web或移动端界面进行。

来源: docs/docs/administration/backup-and-restore.md103-113 docs/docs/administration/backup-and-restore.md210-213

完整的备份和恢复策略

要实现全面的备份解决方案,您需要:

  1. 定期备份数据库(自动或手动)
  2. 备份关键的文件系统目录
  3. 将备份存储在多个位置,包括异地

来源: docs/docs/guides/template-backup-script.md1-91 docs/docs/administration/backup-and-restore.md101-213

模板备份脚本

Immich提供了一个模板bash脚本,可以作为cron作业运行以实现自动化备份。该脚本使用Borg,一个具有版本控制功能的重复数据删除归档器。该脚本

  1. 将数据库备份到 UPLOAD_LOCATION/database-backup
  2. 创建Borg存储库,包含数据库和文件的版本化备份
  3. 维护本地和远程副本以实现异地备份
  4. 根据定义的保留策略自动清理旧备份

有关此脚本的详细信息,请参阅模板备份脚本页面。

来源: docs/docs/guides/template-backup-script.md1-91 docs/docs/administration/backup-and-restore.md6

恢复完整备份

要恢复完整备份

  1. 使用相同的文件夹结构设置一个新的Immich实例
  2. 通过将所有备份文件复制回其原始位置来恢复文件系统
  3. 按照数据库恢复过程恢复数据库
  4. 如果您没有备份生成的内容,请从管理界面运行缩略图生成和视频转码作业。

注意:确保恢复的数据库中的文件路径与磁盘上的实际文件位置匹配。如果您更改了路径或目录结构,可能需要相应地更新数据库。Immich将文件路径保存在数据库中,并且不扫描库文件夹来更新数据库。

来源: docs/docs/administration/backup-and-restore.md15 docs/docs/guides/template-backup-script.md72-90