Index: .ppignore is inconsistently ignoring files #2481

Open
opened 2026-02-20 01:12:16 -05:00 by deekerman · 3 comments
Owner

Originally created by @mrzool on GitHub (Feb 10, 2026).

Originally assigned to: @mrzool on GitHub.

Before You Continue

  • This is a new, confirmed bug that has not yet been reported or documented

What Is Not Working as Documented?

Ignoring files and folders whose names match certain patterns is documented as supported via .ppignore files, but this does not appear to work reliably.

Specifically, some files are ignored based on their extension using wildcard rules (e.g. *.mov, *.MOV) in a .ppignore file placed in the main directory, while other files matching the same rules are still being indexed.

This happens despite identical file extensions and a single, correctly placed .ppignore file, suggesting the ignore mechanism is applied inconsistently.

How Can We Reproduce It?

The issue does not appear to be reliably reproducible, as the ignore behavior is inconsistent. Files matching the same ignore rules are sometimes ignored correctly and sometimes indexed.

I observed this while attempting to ignore .mov files, but the issue may affect other file types as well. The library being indexed is a large (~17 TB) media archive.

Steps attempted:

  1. Wipe the database to ensure a fresh start.
  2. Place a .ppignore file in the main originals directory (exact contents provided below).
  3. Start the indexing process.
  4. After indexing has been running for some time, verify whether files matching the .ppignore rules are still being added to the index.

What Behavior Do You Expect?

Files and directories whose names match rules defined in a correctly detected .ppignore file should be ignored consistently and reliably, as documented, and never be indexed.

What Could Be the Cause?

Unknown. The behavior appears inconsistent, and I was not able to identify a clear pattern or condition under which .ppignore rules are applied or ignored.

Logs, Sample Files, or Screenshots

.ppignore

I’m trying to build a photos-only archive. Since .ppignore does not support whitelisting, this file explicitly excludes video, audio, and other non-image formats, (thus the length).

00*
GEMEINSAME\ PROJEKTE
#recycle

*.mp4
*.MP4
*.mov
*.MOV
*.m4v
*.M4V
*.avi
*.AVI
*.mkv
*.MKV
*.webm
*.WEBM
*.wmv
*.WMV
*.flv
*.FLV
*.mpg
*.MPG
*.mpeg
*.MPEG
*.mts
*.MTS
*.m2ts
*.M2TS
*.3gp
*.3GP
*.3g2
*.3G2
*.ogv
*.OGV

*.wav
*.WAV
*.flac
*.FLAC
*.mp3
*.MP3
*.aac
*.AAC
*.ogg
*.OGG
*.aiff
*.AIFF
*.aif
*.AIF
*.caf
*.CAF
*.bwf
*.BWF

*.pdf
*.PDF
*.doc
*.DOC
*.docx
*.DOCX
*.xls
*.XLS
*.xlsx
*.XLSX
*.ppt
*.PPT
*.pptx
*.PPTX
*.txt
*.TXT

*.psd
*.PSD
*.ai
*.AI
*.indd
*.INDD
*.sketch
*.SKETCH
*.xcf
*.XCF

*.cr2
*.CR2
*.nef
*.NEF
*.arw
*.ARW
*.orf
*.ORF
*.rw2
*.RW2
*.dng
*.DNG
*.pef
*.PEF
*.raf
*.RAF
*.sr2
*.SR2
*.srw
*.SRW
*.3fr
*.3FR
*.mef
*.MEF
*.kdc
*.KDC
*.mrw
*.MRW
*.rwl
*.RWL

Indexing logs

The logs clearly show (a) the .ppignore getting detected and directories matching ignore patterns getting ignored successfully (b) mov files getting correctly ignored and (c) mov files getting indexed shortly after.

time="2026-02-09T14:41:16Z" level=info msg="indexing originals..."
time="2026-02-09T14:41:16Z" level=info msg="index: added folder /"
time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"#recycle\""
time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"@eaDir\""
time="2026-02-09T14:41:16Z" level=info msg="index: added folder /AKADEMIE"
time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"AKADEMIE/00-podcast_media\""
time="2026-02-09T14:41:16Z" level=info msg="index: added folder /AKADEMIE/01_picture alliance"
time="2026-02-09T14:41:16Z" level=info msg="index: added folder /AKADEMIE/01_picture alliance/2025"
time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"AKADEMIE/01_picture alliance/2025/@eaDir\""

[...]

time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/@eaDir\""
time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-01-h264.mov\""
time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-02-h264.mov\""
time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-03-h264.mov\""
time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-04-A-Altern-1-h264.mov\""

[...]

time="2026-02-09T14:42:27Z" level=info msg="index: added main mov file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0335.MOV"
time="2026-02-09T14:42:27Z" level=info msg="index: stacked related thm file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0335.THM"
time="2026-02-09T14:42:27Z" level=info msg="index: metadata of photo uid pt6t253bi0kmo3tz restored from MVI_0336.yml"
time="2026-02-09T14:42:27Z" level=info msg="index: added main mov file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0336.MOV"
time="2026-02-09T14:42:27Z" level=info msg="index: stacked related thm file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0336.THM"
time="2026-02-09T14:42:28Z" level=info msg="index: stacked related jpg file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0335.MOV.jpg"
time="2026-02-09T14:42:28Z" level=info msg="index: ignored \"AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0338.MOV\""
time="2026-02-09T14:42:28Z" level=info msg="vision: found 1 face in MVI_0336.MOV.jpg [186.910094ms]"
time="2026-02-09T14:42:28Z" level=info msg="index: stacked related jpg file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0336.MOV.jpg"
time="2026-02-09T14:42:28Z" level=info msg="index: ignored \"AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0339.MOV\""
time="2026-02-09T14:42:47Z" level=info msg="index: metadata of photo uid pt6t264bxsp2488r restored from MVI_0338.yml"
time="2026-02-09T14:42:47Z" level=info msg="index: added main mov file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0338.MOV"

Which Software Versions Do You Use?

  • PhotoPrism Architecture & Build Number: Docker on Linux (AMD64) 251130-b3068414c
  • Database Type & Version: mariadb from 11.8.5-MariaDB, client 15.2 for debian-linux-gnu
  • Operating System Types & Versions: Linux (Synology NAS, DSM 7.2.2-72806 Update 6)

On What Device Is PhotoPrism Installed?

PhotoPrism is running in Docker on a Synology NAS (DSM) with MariaDB, indexing a ~17 TB archive stored on an external USB SSD connected to the NAS.

Do You Use a Reverse Proxy, Firewall, VPN, or CDN?

Using the standard DSM reverse proxy and VPN for remote access.

Originally created by @mrzool on GitHub (Feb 10, 2026). Originally assigned to: @mrzool on GitHub. ### Before You Continue - [x] This is a new, confirmed bug that has not yet been reported or documented ### What Is Not Working as Documented? Ignoring files and folders whose names match certain patterns is documented as supported via `.ppignore` files, but this does not appear to work reliably. Specifically, some files are ignored based on their extension using wildcard rules (e.g. `*.mov`, `*.MOV`) in a `.ppignore` file placed in the main directory, while other files matching the same rules are still being indexed. This happens despite identical file extensions and a single, correctly placed `.ppignore` file, suggesting the ignore mechanism is applied inconsistently. ### How Can We Reproduce It? The issue does not appear to be reliably reproducible, as the ignore behavior is inconsistent. Files matching the same ignore rules are sometimes ignored correctly and sometimes indexed. I observed this while attempting to ignore `.mov` files, but the issue may affect other file types as well. The library being indexed is a large (~17 TB) media archive. Steps attempted: 1. Wipe the database to ensure a fresh start. 2. Place a `.ppignore` file in the main `originals` directory (exact contents provided below). 3. Start the indexing process. 4. After indexing has been running for some time, verify whether files matching the `.ppignore` rules are still being added to the index. ### What Behavior Do You Expect? Files and directories whose names match rules defined in a correctly detected `.ppignore` file should be ignored consistently and reliably, as documented, and never be indexed. ### What Could Be the Cause? Unknown. The behavior appears inconsistent, and I was not able to identify a clear pattern or condition under which `.ppignore` rules are applied or ignored. ### Logs, Sample Files, or Screenshots ### `.ppignore` I’m trying to build a photos-only archive. Since `.ppignore` does not support whitelisting, this file explicitly excludes video, audio, and other non-image formats, (thus the length). ``` 00* GEMEINSAME\ PROJEKTE #recycle *.mp4 *.MP4 *.mov *.MOV *.m4v *.M4V *.avi *.AVI *.mkv *.MKV *.webm *.WEBM *.wmv *.WMV *.flv *.FLV *.mpg *.MPG *.mpeg *.MPEG *.mts *.MTS *.m2ts *.M2TS *.3gp *.3GP *.3g2 *.3G2 *.ogv *.OGV *.wav *.WAV *.flac *.FLAC *.mp3 *.MP3 *.aac *.AAC *.ogg *.OGG *.aiff *.AIFF *.aif *.AIF *.caf *.CAF *.bwf *.BWF *.pdf *.PDF *.doc *.DOC *.docx *.DOCX *.xls *.XLS *.xlsx *.XLSX *.ppt *.PPT *.pptx *.PPTX *.txt *.TXT *.psd *.PSD *.ai *.AI *.indd *.INDD *.sketch *.SKETCH *.xcf *.XCF *.cr2 *.CR2 *.nef *.NEF *.arw *.ARW *.orf *.ORF *.rw2 *.RW2 *.dng *.DNG *.pef *.PEF *.raf *.RAF *.sr2 *.SR2 *.srw *.SRW *.3fr *.3FR *.mef *.MEF *.kdc *.KDC *.mrw *.MRW *.rwl *.RWL ``` ### Indexing logs The logs clearly show (a) the `.ppignore` getting detected and directories matching ignore patterns getting ignored successfully (b) `mov` files getting correctly ignored and (c) `mov` files getting indexed shortly after. ``` time="2026-02-09T14:41:16Z" level=info msg="indexing originals..." time="2026-02-09T14:41:16Z" level=info msg="index: added folder /" time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"#recycle\"" time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"@eaDir\"" time="2026-02-09T14:41:16Z" level=info msg="index: added folder /AKADEMIE" time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"AKADEMIE/00-podcast_media\"" time="2026-02-09T14:41:16Z" level=info msg="index: added folder /AKADEMIE/01_picture alliance" time="2026-02-09T14:41:16Z" level=info msg="index: added folder /AKADEMIE/01_picture alliance/2025" time="2026-02-09T14:41:16Z" level=info msg="index: ignored \"AKADEMIE/01_picture alliance/2025/@eaDir\"" [...] time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/@eaDir\"" time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-01-h264.mov\"" time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-02-h264.mov\"" time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-03-h264.mov\"" time="2026-02-09T14:41:41Z" level=info msg="index: ignored \"AKADEMIE/2006/2006_01_21 MEISTERKLASSE_1-Ton/Clip-04-A-Altern-1-h264.mov\"" [...] time="2026-02-09T14:42:27Z" level=info msg="index: added main mov file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0335.MOV" time="2026-02-09T14:42:27Z" level=info msg="index: stacked related thm file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0335.THM" time="2026-02-09T14:42:27Z" level=info msg="index: metadata of photo uid pt6t253bi0kmo3tz restored from MVI_0336.yml" time="2026-02-09T14:42:27Z" level=info msg="index: added main mov file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0336.MOV" time="2026-02-09T14:42:27Z" level=info msg="index: stacked related thm file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0336.THM" time="2026-02-09T14:42:28Z" level=info msg="index: stacked related jpg file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0335.MOV.jpg" time="2026-02-09T14:42:28Z" level=info msg="index: ignored \"AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0338.MOV\"" time="2026-02-09T14:42:28Z" level=info msg="vision: found 1 face in MVI_0336.MOV.jpg [186.910094ms]" time="2026-02-09T14:42:28Z" level=info msg="index: stacked related jpg file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0336.MOV.jpg" time="2026-02-09T14:42:28Z" level=info msg="index: ignored \"AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0339.MOV\"" time="2026-02-09T14:42:47Z" level=info msg="index: metadata of photo uid pt6t264bxsp2488r restored from MVI_0338.yml" time="2026-02-09T14:42:47Z" level=info msg="index: added main mov file AKADEMIE/2010/2010_09_18-INTERVIEW_Sepp_Reidinger/Interview_Sepp_Reidinger/a/DCIM/100EOS5D/MVI_0338.MOV" ``` ### Which Software Versions Do You Use? - PhotoPrism Architecture & Build Number: Docker on Linux (AMD64) 251130-b3068414c - Database Type & Version: `mariadb from 11.8.5-MariaDB, client 15.2 for debian-linux-gnu` - Operating System Types & Versions: Linux (Synology NAS, DSM 7.2.2-72806 Update 6) ### On What Device Is PhotoPrism Installed? PhotoPrism is running in Docker on a Synology NAS (DSM) with MariaDB, indexing a ~17 TB archive stored on an external USB SSD connected to the NAS. ### Do You Use a Reverse Proxy, Firewall, VPN, or CDN? Using the standard DSM reverse proxy and VPN for remote access.
Author
Owner

@lastzero commented on GitHub (Feb 10, 2026):

@mrzool Thanks for your report! If you can help us test it extensively using our development preview build, I can provide a fix/improvement for this issue. I'm currently testing it locally.

@lastzero commented on GitHub (Feb 10, 2026): @mrzool Thanks for your report! If you can help us test it extensively using our development preview build, I can provide a fix/improvement for this issue. I'm currently testing it locally.
Author
Owner

@lastzero commented on GitHub (Feb 10, 2026):

@mrzool These changes resolve an issue in which .ppignore rules could be bypassed for related media files during indexing/import. Previously, when a related file (e.g., a generated preview sidecar) was processed later, an ignored main file (e.g., *.mov) could be added.

Ignore rules are now consistently reapplied to related files, ensuring that ignored files stay ignored. I started a new preview build so you can test this and provide feedback:

Please let us know if it works for you!

@lastzero commented on GitHub (Feb 10, 2026): @mrzool These changes resolve an issue in which .ppignore rules could be bypassed for related media files during indexing/import. Previously, when a related file (e.g., a generated preview sidecar) was processed later, an ignored main file (e.g., `*.mov`) could be added. Ignore rules are now consistently reapplied to related files, ensuring that ignored files stay ignored. I started a new preview build so you can test this and provide feedback: - https://docs.photoprism.app/getting-started/updates/#development-preview - https://hub.docker.com/r/photoprism/photoprism/tags?name=preview Please let us know if it works for you!
Author
Owner

@mrzool commented on GitHub (Feb 10, 2026):

Thanks so much for your reply. I’m pretty swamped with work right now but I’ll test this with the dev preview build as soon as possible and update the thread accordingly.

@mrzool commented on GitHub (Feb 10, 2026): Thanks so much for your reply. I’m pretty swamped with work right now but I’ll test this with the dev preview build as soon as possible and update the thread accordingly.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/photoprism#2481
No description provided.