Restoring Microsoft Windows Deduplication-Enabled Volumes

Microsoft introduced data deduplication as a feature for their volumes beginning with Windows 2012. Data deduplication optimizes your drive to ensure that you’re not storing multiple copies of the same data in various locations. It does this by breaking up the data into chunks, compressing them and creating references to those data chunks that make it easy to access the files. As such, the biggest benefit that you get from data deduplication is the amount of space you save. This does not come without its own challenges. I’m going to walk through a restore scenario that I ran across recently where I was receiving errors attempting to open restored files that were originally backed up from a deduplication-enabled volume.

When restoring to the same volume, as long as data deduplication is still enabled on that volume things will restore to the way they were without any issue. However, when the data is restored to a new volume without deduplication enabled, there are some challenges that you’ll run across. Let’s rewind to how the deduplication references the files on the original drive. When the data is deduped, each file is replaced with a reparse point containing references to its data chunks. These reparse points are essentially symlinks.

When this data is restored to a new volume you’ll need to remove these reparse points in order for the files to be opened successfully. You do that by using the fsutil command in the command prompt. Here’s the command you’ll need:

fsutil reparsepoint delete [full path to file]

It’s possible that you’ll receive an access denied error when attempting this. If so, you’ll need to carry out the same command from within safe mode.

Not sure if your files are deduped?

You can run the following command in PowerShell which will put the path for each file that contains a reparse point (meaning they’re deduped) within a text file stored on the desktop.

Get-ChildItem -R "[top-level path containing the restored files]" -attributes ReparsePoint | ForEach-Object { $_.FullName } > C:\Users\%Username%\Desktop\reparsepoint_files.txt

Have a lot of files with reparse points?

You can use the following script to carry out the fsutil command against all of the files that contain a reparse point.

$restoreFiles = Get-ChildItem -R "C:\restore" -Attributes ReparsePoint | Select-Object FullName

$count = 0

foreach ($item in $restoreFiles) {

	$command = 'fsutil reparsepoint delete' + ' ' + '"' + $item.fullname + '"'
	write-output $command
	iex $command

c}

write-output $count

This will print a line to the console for any ‘fsutil’ command carried out as well as give you a total count of the number of items that were corrected at the end.

After running these commands/scripts on the restored directory, you’ll be able to access your files. At this point, you can enable the deduplication feature on the volume to store the data as you did on the original volume.

Reach out if you have any questions on the Windows data deduplication feature for volumes, the Jungle Disk team is here to help.

Protect Your Business Data

We are passionate about helping our customers protect their data. We want you to use Jungle Disk to protect yours. Click on Sign Up to get started. It takes less than 5 minutes!

Sign Up