all blog now

October 13, 2023

BackupAssist and Reparse Points

Reparse points are a feature of the NTFS file system introduced in Windows 2000 and later versions. They provide a way to redirect access to files or directories within the directory structure. Each reparse point contains a reparse tag and data that is interpreted by a filesystem filter driver identified by the tag. These points allow you to create a sort of symbolic linking capability within the NTFS file system that is similar to the way in which Windows shortcuts and Unix symbolic links work.

Reparses points also enable directory junctions and volume mount points, which mark NTFS folders with surrogate names. You can use these features to create a single local namespace using local folders, local volumes, and network shares.

During the setup of these features, an application stores information about how it wants to use the reparse point in a special tag associated with it. When a file is accessed, the file system looks for a reparse point with the same tag and then uses its data to "reparse" the request by finding the filesystem filter that matches the format of the reparse point's data and passing the request to that filter to execute as directed by the application.

Although a reparse point can be used to simulate a Symbolic Link, it is not really a link at all. The key difference is that a Link is quite intelligent and will track changes in the target path (for example, if it moves from one drive to another). Unlike this, a Junction Point does not know whether the path is a relative or absolute one. The result is that, for BackupAssist to back up a Junction Point correctly, it needs to be deselected from the backup set.