Why Does a Media Library Scan Miss Movies on a Mounted Share?

Eva Wong is the Technical Writer and resident tinkerer at ZimaSpace. A lifelong geek with a passion for homelabs and open-source software, she specializes in translating complex technical concepts into accessible, hands-on guides. Eva believes that self-hosting should be fun, not intimidating. Through her tutorials, she empowers the community to demystify hardware setups, from building their first NAS to mastering Docker containers.

A media scan misses movies when the server cannot traverse the mounted path, sees a different path, or rejects the files during identification.

On a home NAS, โ€œthe share is mountedโ€ may only mean the host shell can see a directory. The media-server process may be inside Docker, using another bind path, running under a different UID, or scanning an empty local mount point left behind after the remote share disconnected. Diagnose one missing movie from storage to application instead of repeatedly launching full scans that cannot repair a path, permission, naming, or parser failure.

Prove the Mounted Share Contains the Movie Right Now

Check the exact library source path from the host and list one missing movie by full filename. Confirm the filesystem type, mount source, mount options, free space, and a known file count rather than trusting that the mount-point directory merely exists.

A disconnected network share can leave an ordinary empty directory at the same mount point, allowing a scan to finish without finding media. A Jellyfin report describes a scan that appeared successful even though the target resolved to zero items.

Read a small portion of the missing file and list its parent directories. If the share is absent, restore the mount before scanning and configure the media service to start only after the remote filesystem is available. Do not add the empty local mount point as a second library path.

Check the Path From Inside the Media-Server Container

Enter the running container and inspect the exact path configured in the library. The host may use /mnt/media/movies while the container sees it as /media/movies; only the container-side path belongs in the application.

New media can remain invisible even when older items still play if the running container no longer sees the current host path or receives stale mount contents. One Jellyfin case reported that new media did not appear after repeated scans.

Compare the container mount definition with the effective mount shown by the runtime. Verify that the bind source is the real mounted share, not a parent directory or obsolete path. Recreate the container only after confirming that its persistent configuration and database mounts are unchanged.

Test Directory Traversal as the Actual Service User

Use the media-server UID and GID to list every directory from the library root to the movie file. Reading the file is not enough; the process also needs execute permission on each parent directory to traverse the path.

A Jellyfin library-visibility issue identifies missing read and directory-execute permissions as a direct cause of items not appearing. The important boundary is directory traversal permission, not whether an administrator account can browse the share.

Repair the narrowest ownership, group, or ACL rule that gives the service read-only media access. The ZimaSpace guide to permissions after moving files provides the adjacent workflow when the share works over SMB but not inside the container.

Compare One Missing Movie With One Detected Movie

Choose two folders under the same mounted share: one movie the library detects and one it misses. Compare filename, extension, folder depth, capitalization, special characters, file size, symlink use, permissions, timestamps, and whether the file is complete.

Some scanner failures are item-specific rather than share-wide. A reported Jellyfin case found movies that appeared only after they were moved to another folder, showing why a controlled detected-versus-missing comparison is more useful than another global rescan.

Rename or move only a copied test item into a simple structure such as Movies/Movie Name (Year)/Movie Name (Year).mkv. If the copy appears, inspect the original folderโ€™s naming, hidden markers, permissions, or filesystem behavior before changing the whole library.

Read the Scanner Log at the First Missing Path

Start a targeted scan and follow the log from the moment the scanner enters the affected directory. Search for access denied, directory not found, I/O errors, unsupported files, probe failures, database constraints, metadata-provider errors, and scan cancellation.

A full scan can stop or skip work after a path-level exception while the user interface only shows an incomplete library. Jellyfin has documented scans affected by a missing-directory exception, which makes the first error more important than the final progress indicator.

Fix the earliest repeatable error and rerun the smallest possible scan. Do not delete the library database, metadata, or cache until path visibility and permissions are proven; destructive resets can remove diagnostic evidence without repairing the mounted share.

Verify the Fix With a Controlled Import and Reboot

Add one test movie with a clean name to the same share, scan the affected library, and confirm that it appears once with the correct path and metadata. Then restart the container and reboot the host.

After reboot, confirm that the remote share mounts before the media service, the container sees the populated path, the service user can traverse it, and the scanner detects a newly added test file without manual permission changes.

The repair is complete only when the real missing movies appear from their intended mounted location, no empty fallback directory is scanned, and the result survives remount, container recreation, and host restart. Remove the test copy after confirming that the original library path is stable.

Support & Tips

More to Read

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.