NTFS Find and NTFS Backup

When using a Windows system with Interix or as NFS server, it can be difficult to backup all the files on a NTFS volume. This is because NTFS has many features not widely known in the Windows community and with little to no support in the Windows GUI. These features are used, however, e.g. by the Interix subsystem or the NFS server. In particular the interesting NTFS features are:

Most backup programs unfortunately can't handle several of these NTFS features, so I decided to start my own copy program written in Perl, which is meant to be used as a backup solution for NTFS volumes. The idea is to simply copy all files to another NTFS volume (e.g. external HDD drive) while preserving all of the NTFS features. To save space, it should be possible to clone an existing backup on the external HDD by creating hard links for each unchanged file to the existing backup. Several backups can be stored in a space efficient manner, and restoring doesn't require a special software.

The backup program comes as a Perl module called Win32::NtfsBackup. As a side effect I wrote a Perl module called Win32::Find to traverse a NTFS directory tree, similar to Perl's File::Find, but with support for NTFS features.

A similar idea for backing up files has been followed by this rsync approach, but unfortunately rsync on Cygwin can't handle case sensitive files, alternate data streams and ACLs. There is also Robocopy but that unfortunately can't handle hard links. Also it can't be case sensitive.

Current status

My NTFS backup script is written in Perl. You need ActivePerl and the Win32::API package to use it. With ActivePerl 5.10.1 Win32::API is already included.

Download current version



technical solved problems

Last update of this document: Friday, 23-Apr-2010 23:46:15 CEST Copyright 2008-2010 Martin Köppe <mkoeppe 'at' gmx . de>