跳到主要内容

外部資料庫

外部資料庫跟踪存儲在 Immich 外部文件系統中的資產。在掃描外部資料庫時,Immich 會從磁碟中加載視頻和照片並創建相應的資產。這些資產將顯示在主時間線中,並且它們看起來和行為上類似於其他資產,包括地圖檢視、添加到相簿等功能。如果稍後文件在 Immich 外被修改,需要掃描資料庫才能顯示更改。

如果外部資產從磁碟中刪除,Immich 將在重新掃描時將其移至回收站。若要恢復資產,您需要恢復原始文件。30 天後,文件將從回收站中移除,並且在 Immich 中對元數據的任何更改將丟失。

注释

如果您以任何方式為外部資產添加元數據(例如將其添加到相簿或編輯描述),這些元數據僅存儲在 Immich 中,並不會持續保存於外部資產文件中。如果將資產移動到資料庫中的其他位置,重新掃描後所有此類元數據都將丟失。這是已知問題,將在未來的版本中修復。

注释

由於積極的快取策略,刷新後的資產可能需要一些時間才能正確顯示在網頁視圖中。您需要清除瀏覽器的快取才能查看更改。這是已知問題,將在未來版本中修復。在 Chrome 中,您需要按 F12 打開開發者控制台,然後按 F5 重載頁面,最後右鍵單擊重載按鈕並選擇“清空快取並強制重載”。

匯入路徑

外部資料庫使用匯入路徑來確定哪些文件需要掃描。每個資料庫可以有多個匯入路徑,以便將來自不同位置的文件添加到同一資料庫中。匯入路徑是遞歸掃描的,如果文件存在於多個匯入路徑中,它只會被添加一次。每個匯入文件必須是文件系統中存在的可讀目錄;匯入路徑對話框會提醒您任何無法訪問的路徑。

如果編輯匯入路徑使得外部文件不再存在於任何匯入路徑中,它將像刪除文件一樣從資料庫中移除。如果文件移回到匯入路徑,它會像新文件一樣再次被添加。

疑難排解

有時外部資料庫無法正確掃描。如果 Immich 無法訪問文件,可能會發生這種情況。以下是一些檢查項目:

  • 在 docker-compose 文件中,卷是否正確掛載?
  • 這些卷是否也掛載到任何 worker 容器上?
  • 匯入路徑是否設置正確,並且與 docker-compose 文件中設置的路徑匹配?
  • 確保不要在匯入資料庫中使用符號鏈接,也不要跨越 docker 掛載進行鏈接。
  • 是否正確設置了許可權?
  • 確保使用正斜杠(/)而不是反斜杠。

為了驗證 Immich 是否可以訪問您的外部資料庫,請在容器內啟動一個 shell。運行 docker exec -it immich_server bash 進入 bash shell。如果您的匯入路徑是 /data/import/photos,請使用 ls /data/import/photos 檢查。同樣地,再次檢查微服務容器中的相同位置。

排除模式

默認情況下,匯入路徑中的所有文件都將添加到資料庫中。如果有不應添加的文件,可以使用排除模式將它們排除。排除模式是與完整文件路徑匹配的通配模式。如果文件匹配某個排除模式,它將不會被添加到資料庫中。每個資料庫的掃描設置頁面中可以添加排除模式。

一些基本示例:

  • **/*.tif 將排除所有擴展名為 .tif 的文件
  • **/hidden.jpg 將排除所有名為 hidden.jpg 的文件
  • **/Raw/** 將排除任何名為 Raw 的目錄中的所有文件
  • **/*.{tif,jpg} 將排除所有擴展名為 .tif.jpg 的文件

對於特殊字符(如 @)需要進行轉義,例如:

  • **/\@eaDir/** 將排除任何名為 @eaDir 的目錄中的所有文件
信息

內部地,Immich 使用 glob 套件來處理排除模式,有時這些模式會被轉換為 Postgres LIKE 模式。目的是支持基本的目錄排除,但我們不建議進行高級使用,因為這些模式無法可靠地轉換為 Postgres 語法。請參考 glob 文件 以獲得簡要的 glob 模式概述。

自動監控(實驗性功能)

此功能被認為是實驗性的,僅適用於高級用戶。如果啟用,它將允許對文件系統的自動監控,這意味著新資產將自動導入到 Immich,而無需重新掃描。

如果您的照片位於網路驅動器上,自動文件監控可能不起作用。在這種情況下,您需要依賴週期性資料庫刷新來拉取更新。

疑難排解

如果您遇到 ENOSPC 錯誤,則需要增加文件監控器的限制。在 sysctl 中,該鍵稱為 fs.inotify.max_user_watches,默認值為 8192。將此數字增加到一個大於您將監控的文件數量的合適值。需要注意的是,Immich 必須監控匯入路徑中的所有文件,包括任何被忽略的文件。

ERROR [LibraryService] Library watcher for library c69faf55-f96d-4aa0-b83b-2d80cbc27d98 encountered error: Error: ENOSPC: System limit for number of file watchers reached, watch '/media/photo.jpg'

在某些罕見的情況下,庫監控器可能會掛起,阻止 Immich 啟動。在這種情況下,請在配置文件中禁用庫監控器。如果是從 Immich 內啟用了監控器,則應在沒有微服務的情況下啟動應用程序。禁用 docker-compose 文件中的微服務,啟動 Immich,然後在管理設置中禁用庫監控器,關閉 Immich,重新啟用微服務,然後正常啟動 Immich。

每日任務

每天安排一次自動掃描任務。這項任務還會清理任何卡在刪除中的資料庫。可以通過在資料庫管理頁面上點擊“掃描所有資料庫”來觸發清理。

使用方法

讓我們通過一個具體示例來展示如何將現有的圖片資料庫添加到 Immich。以下是我們想添加的文件夾:

  • /home/user/old-pics:一個包含童年照片的文件夾。
  • /mnt/nas/christmas-trip:聖誕旅行的照片。子目錄 /mnt/nas/christmas-trip/Raw 包含 DSLR 直接輸出的原始文件。我們不希望將原始文件導入到 Immich。
  • /mnt/media/videos:來自同一次聖誕旅行的視頻。

首先,我們需要規劃如何組織資料庫。聖誕旅行的照片應該屬於自己的資料庫,因為我們想排除原始文件。而視頻和舊照片可以歸在同一資料庫中,因為我們想匯入所有文件。如果其他文件夾中不存在匹配 Raw 排除模式的文件,我們也可以將這三個文件夾添加到同一資料庫中。

掛載 Docker 卷

immich-server 容器需要訪問圖片資料庫。修改您的 docker-compose 文件如下:

docker-compose.yml
  immich-server:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
+ - /mnt/nas/christmas-trip:/mnt/media/christmas-trip:ro
+ - /home/user/old-pics:/mnt/media/old-pics:ro
+ - /mnt/media/videos:/mnt/media/videos:ro
+ - /mnt/media/videos2:/mnt/media/videos2 # 警告:Immich 能夠刪除此文件夾中的文件,因為它不以 :ro 結尾
+ - "C:/Users/user_name/Desktop/my media:/mnt/media/my-media:ro" # Windows 系統中的匯入路徑。
提示

ro 標誌僅給予卷的只讀訪問權限。 這將禁止在 Web 界面中刪除圖片,或添加元數據到資料庫(XMP 副檔案)。

信息

請記住運行 docker compose up -d 以註冊更改。確保您可以在容器中看到已掛載的路徑。

創建新資料庫

這些操作必須由 Immich 管理員執行。

  • 點擊右上角的您的頭像
  • 點擊 管理 -> 外部資料庫
  • 點擊 創建一個外部資料庫...
  • 選擇哪個用戶擁有此資料庫,這一選擇後續無法更改
  • 輸入 /mnt/media/christmas-trip 然後點擊 添加
  • 點擊 保存
  • 點擊新創建資料庫的下拉菜單
  • 點擊 掃描
  • 點擊新創建資料庫的下拉菜單
  • 點擊 重命名資料庫 並將其重命名為“聖誕旅行”

注意:我們必須使用 /mnt/media/christmas-trip 路徑而不是 /mnt/nas/christmas-trip 路徑,因為所有的路徑都必須是 Docker 容器看到的路徑。

接下來,我們將添加一個排除模式來篩選掉原始文件。

  • 點擊新創建聖誕資料庫的下拉菜單
  • 點擊 管理
  • 點擊 掃描設置
  • 點擊 添加排除模式
  • 輸入 **/Raw/** 然後點擊 保存。
  • 點擊 保存
  • 點擊新創建資料庫的下拉菜單
  • 點擊 掃描

聖誕旅行資料庫將現在在後台進行掃描。同時,我們來將視頻和舊照片添加到另一個資料庫中。

  • 點擊 創建外部資料庫。
注释

如果此處出現錯誤,請將其他外部資料庫重命名為其他名稱。這是一個將在未來版本中修復的錯誤。

  • 點擊新建資料庫的下拉菜單
  • 點擊 編輯匯入路徑
  • 點擊 添加路徑
  • 輸入 /mnt/media/old-pics 然後點擊 添加
  • 點擊 添加路徑
  • 輸入 /mnt/media/videos 然後點擊 添加
  • 點擊 保存
  • 點擊 掃描

在幾秒鐘內,old-pics 和 videos 文件夾中的資產應出現在主時間線中。

文件夾視圖

資料夾檢視提供了一種除了時間軸之外的額外檢視,類似於檔案瀏覽器。它允許您在資料庫中瀏覽資料夾與檔案。這個功能非常適合用於經過高度整理及自訂的外部資料庫或精心配置的儲存範本。

您可以在 帳戶設定 > 功能 > 資料夾 中啟用此功能

設定自訂掃描間隔

注释

只有管理員可以執行此操作。

您可以在「管理 > 設定 > 外部資料庫」中定義觸發外部資料庫重新掃描的自訂間隔。 您可以使用預設格式或 Cron 格式來設定掃描間隔。欲了解更多資訊,您可以參考 Crontab Guru