Skip to content

maharmstone/ntfs2btrfs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ntfs2btrfs

Ntfs2btrfs is a tool which does in-place conversion of Microsoft's NTFS filesystem to the open-source filesystem Btrfs, much as btrfs-convert does for ext2. The original image is saved as a reflink copy at image/ntfs.img, and if you want to keep the conversion you can delete this to free up space.

Although I believe this tool to be stable, please note that I take no responsibility if something goes awry!

You're probably also interested in WinBtrfs, which is a Btrfs filesystem driver for Windows.

Thanks to Eric Biggers, who successfully reverse-engineered Windows 10's "WOF compressed data", and whose code I've used here.

Usage

On Windows, from an Administrator command prompt:

ntfs2btrfs.exe D:\

Bear in mind that it won't work with your boot drive or a drive with a pagefile on it.

On Linux, as root:

ntfs2btrfs /dev/sda1

Installation

On Windows, go to the Releases page and download the latest Zip file.

For Linux:

For other distributions or operating systems, you will need to compile it yourself - see below.

Changelog

  • 20210523

    • Improved handling of large compressed files
  • 20210402 (source code only release)

    • Fixes for compilation on non-amd64 architectures
  • 20210105

    • Added support for NTFS compression
    • Added support for "WOF compressed data"
    • Fixed problems caused by sparse files
    • Miscellaneous bug fixes
  • 20201108

    • Improved error handling
    • Added better message if NTFS is corrupted or unclean
    • Better handling of relocations
  • 20200330

    • Initial release

Compilation

On Windows, open the source directory in a recent version of MSVC, right-click on CMakeLists.txt, and click Compile.

On Linux:

cmake .
make

You'll also need libfmt installed - it should be in your package manager.

What works

  • Files
  • Directories
  • Symlinks
  • Other reparse points
  • Security descriptors
  • Alternate data streams
  • DOS attributes (hidden, system, etc.)

What doesn't work

  • Rollback to original NTFS image
  • Windows' old extended attributes (you're not using these)
  • Large (i.e >16KB) ADSes (you're not using these either)
  • Preservation of LXSS metadata
  • Preservation of the case-sensitivity flag
  • Unusual cluster sizes (i.e. not 4 KB)
  • Encrypted files

Can I boot Windows from Btrfs with this?

Yes, if the stars are right. See Quibble.