I have a Windows 2012 R2 server running as a VM (on top of KVM/Libvirt). It has an extra "internal" disk defined as F:
If I snapshot the Linux-based host's logical volume representing F:
and mount it on the host I get many files tagged as being an unsupported reparse point.
What I want to do is to backup the filesystem from the host, which is why I've started from here.
Here is an example from the host's perspective
lvcreate --name shares-snap --size 10G --snapshot /dev/crypt_md3/shares
mount -o ro,offset=$((129*1024*1024)) /dev/crypt_md3/shares-snap /mnt/dsk
ls -l /mnt/dsk/mfc70.dll
lrwxrwxrwx 1 root root 26 Jan 5 2002 /mnt/dsk/mfc70.dll -> unsupported reparse point
Within the Windows guest, the file properties dialog shows its size to be 952KB but with the size on the disk as 0 bytes. This is classic for a reparse point. The advanced attributes are APL
, with the L
confirming that the file is indeed a reparse point.
Copying the file removes the P
and L
attributes from the copy.
Searching around lead me to How do you find the target of a symlink created with mklink and its accepted answer. I've downloaded both junction 1.06 and NTFSLinksView.
Running junction
gets me nothing useful:
F:\> c:\local\bin\junction mfc70.dll
Junction v1.06 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
F:\mfc70.dll: UNKNOWN MICROSOFT REPARSE POINT
Running dir /L
gets me nothing useful either:
F:\>dir /L mfc70.dll
Volume in drive F is Folder shares
Volume Serial Number is B600-69DE
Directory of F:\
05/01/2002 04:48 974,848 mfc70.dll
1 File(s) 974,848 bytes
0 Dir(s) 233,785,053,184 bytes free
Running dir /A:L
does include the file, so it's definitely a reparse point of some sort.
NTFSLinksView
simply doesn't list the file.
After all this background information, the question is really rather simple:
- How do I find out details of the reparse point?
- What do I tell
ntfs-3g
on the host to remap the junction points so they resolve?
These are probably de-duped files. They are implemented with junctions on disk and the file system driver handles reassembly. I doubt you will find a Linux tool that can deal with them. And other Windows utilities for junctions won't understand them because they were designed for regular junctions, not de-dupe junctions.