diff --git a/server/Watcher.js b/server/Watcher.js
index 3ce6a5f5d4..f348ce8e6c 100644
--- a/server/Watcher.js
+++ b/server/Watcher.js
@@ -6,7 +6,7 @@ const LibraryScanner = require('./scanner/LibraryScanner')
 const Task = require('./objects/Task')
 const TaskManager = require('./managers/TaskManager')
 
-const { filePathToPOSIX } = require('./utils/fileUtils')
+const { filePathToPOSIX, isSameOrSubPath } = require('./utils/fileUtils')
 
 /**
  * @typedef PendingFileUpdate
@@ -183,7 +183,7 @@ class FolderWatcher extends EventEmitter {
     }
 
     // Get file folder
-    const folder = libwatcher.folders.find(fold => path.startsWith(filePathToPOSIX(fold.fullPath)))
+    const folder = libwatcher.folders.find(fold => isSameOrSubPath(fold.fullPath, path))
     if (!folder) {
       Logger.error(`[Watcher] New file folder not found in library "${libwatcher.name}" with path "${path}"`)
       return
@@ -233,7 +233,7 @@ class FolderWatcher extends EventEmitter {
 
   checkShouldIgnorePath(path) {
     return !!this.ignoreDirs.find(dirpath => {
-      return filePathToPOSIX(path).startsWith(dirpath)
+      return isSameOrSubPath(dirpath, path)
     })
   }
 
diff --git a/server/utils/fileUtils.js b/server/utils/fileUtils.js
index 4df264004e..19735fb70d 100644
--- a/server/utils/fileUtils.js
+++ b/server/utils/fileUtils.js
@@ -19,6 +19,25 @@ const filePathToPOSIX = (path) => {
 }
 module.exports.filePathToPOSIX = filePathToPOSIX
 
+/**
+ * Check path is a child of or equal to another path
+ * 
+ * @param {string} parentPath 
+ * @param {string} childPath 
+ * @returns {boolean}
+ */
+function isSameOrSubPath(parentPath, childPath) {
+  parentPath = filePathToPOSIX(parentPath)
+  childPath = filePathToPOSIX(childPath)
+  if (parentPath === childPath) return true
+  const relativePath = Path.relative(parentPath, childPath)
+  return (
+    relativePath === '' // Same path (e.g. parentPath = '/a/b/', childPath = '/a/b')
+    || !relativePath.startsWith('..') && !Path.isAbsolute(relativePath) // Sub path
+  )
+}
+module.exports.isSameOrSubPath = isSameOrSubPath
+
 async function getFileStat(path) {
   try {
     var stat = await fs.stat(path)