- Ntfs2btrfs adalah alat untuk mengonversi sistem file Microsoft NTFS secara in-place ke sistem file open source Btrfs, dan bekerja dengan cara yang mirip dengan
btrfs-convertuntuk ext2 - Sebelum konversi, image asli disimpan sebagai salinan reflink di
image/ntfs.img; jika ingin mempertahankan hasil konversi, image ini dapat dihapus untuk mengosongkan ruang - Di Windows, jalankan
ntfs2btrfs.exe D:\dari Command Prompt administrator, sedangkan di Linux jalankanntfs2btrfs /dev/sda1dengan hak root - Tidak berfungsi pada drive boot atau drive yang memiliki pagefile yang sedang digunakan; saat menggunakan WinBtrfs, flag readonly pada subvolume
imageharus dilepas agar dapat dihapus - Cakupan dukungan mencakup file, direktori, symbolic link, security descriptor, alternate data stream, rollback NTFS, dan pelestarian metadata LXSS, tetapi tidak mendukung file terenkripsi dan ukuran cluster yang tidak biasa
Apa yang dilakukan Ntfs2btrfs
- Ntfs2btrfs adalah alat untuk mengonversi secara in-place sistem file NTFS ke Btrfs
- Image asli disimpan sebagai salinan reflink di
image/ntfs.img- Jika ingin mempertahankan hasil konversi, file ini dapat dihapus untuk mengosongkan ruang
- Alat ini disebut stabil, tetapi disertai peringatan bahwa penulis tidak bertanggung jawab jika terjadi masalah
- Driver sistem file Btrfs untuk Windows, WinBtrfs, juga ditautkan sebagai proyek yang layak dilihat bersama
- Kode ntfs-3g-system-compression dari Eric Biggers, yang merekayasa balik “WOF compressed data” pada Windows 10, digunakan di sini
Cara penggunaan dan batasan
- Di Windows, jalankan dari Command Prompt administrator
ntfs2btrfs.exe D:\
- Di Linux, tentukan block device dengan hak root
ntfs2btrfs /dev/sda1
- Di Windows, target berikut tidak dapat dikonversi
-
Drive boot
- Drive yang memiliki pagefile yang sedang digunakan
- Jika menggunakan WinBtrfs, untuk menghapus subvolume
image, flag readonly harus dilepas terlebih dahulu
-
Jalur instalasi
- Di Windows, Anda dapat mengunduh file Zip terbaru dari halaman Releases atau menggunakan Scoop
- Paket disediakan untuk beberapa distribusi Linux
- Untuk distribusi atau sistem operasi lain, harus dikompilasi sendiri
Kompilasi dan dependensi
- Di Windows, buka direktori sumber dengan versi terbaru MSVC dan jalankan Compile dari
CMakeLists.txt - Di Linux, build dengan
cmakedanmakemkdir buildcd buildcmake ..make
- Build memerlukan libfmt, yang dapat diinstal melalui package manager
- Dukungan kompresi memerlukan zlib, lzo, dan zstd
- Dukungan tersebut dapat dinonaktifkan dengan opsi CMake
WITH_ZLIB,WITH_LZO,WITH_ZSTD
- Dukungan tersebut dapat dinonaktifkan dengan opsi CMake
Fitur yang didukung
- Item berikut dapat dikonversi atau dipertahankan
-
File
-
Direktori
- Symbolic link
- Reparse point lainnya
- Security descriptor
- Alternate data stream
- Atribut DOS
- hidden, system, dan lainnya
- Rollback ke image NTFS asli
- Pelestarian metadata LXSS
-
Item yang tidak didukung
- Extended attribute lama Windows tidak didukung
- Alternate data stream besar yang melebihi 16KB tidak didukung
- Pelestarian flag case-sensitivity tidak didukung
- Ukuran cluster tidak biasa selain 4KB tidak didukung
- File terenkripsi tidak didukung
Perubahan utama yang terlihat dari riwayat perubahan
- Rilis 2025-06-16 memperbaiki masalah kompilasi dengan GCC 15
- Rilis 2024-01-15 memperbaiki masalah kompilasi yang muncul karena
-Werror=incompatible-pointer-typesdiaktifkan secara default pada GCC 14 - Rilis 2023-05-01 memperbaiki masalah urutan inline extent item dan masalah nilai level metadata item
- Kedua masalah tersebut disebut tidak terdiagnosis oleh
btrfs check - ADS dengan nama yang terlalu panjang diubah agar dilewati
- Kedua masalah tersebut disebut tidak terdiagnosis oleh
- Rilis 2022-08-12 mencakup opsi
--no-datasum, pelestarian metadata LXSS/WSL, perbaikan pengenalan huruf drive kecil, dan perbaikan kerusakan saat menempatkan file di area 1MB terakhir - Rilis 2021-09-23 menambahkan dukungan kompresi Btrfs dan dukungan rollback
- Kompresi mendukung zlib, lzo, dan zstd
- Algoritme hash juga menambahkan dukungan untuk
xxhash,sha256, danblake2 - Security descriptor gaya NT4 juga didukung
- Kecepatan konversi untuk volume dengan banyak inode ditingkatkan
- Bug kerusakan sistem file yang tidak dapat ditangkap oleh
btrfs checkjuga diperbaiki
- Rilis 2021-01-05 mencakup perbaikan untuk kompresi NTFS, “WOF compressed data”, dan masalah terkait sparse file
Jika mem-boot Windows dari Btrfs
- Mem-boot Windows dari Btrfs yang dikonversi dengan alat ini disebut memungkinkan jika syaratnya terpenuhi
- Quibble ditautkan sebagai proyek terkait
1 komentar
Komentar Hacker News
Tautan ke Quibble, yang secara terbuka dan dapat diperluas merekayasa balik bootloader kernel Windows, jauh lebih menarik: https://github.com/maharmstone/quibble
Kalau melakukan ini di ZFS, rasanya akan menambahkan lapisan yang membaca format filesystem lain lalu mensintesis ZFS block pointer
Dengan begitu ZFS bisa membaca filesystem lain, dan dalam proses penulisan bisa perlahan menulis ulang semuanya. Jika ZFS punya fitur penulisan ulang block pointer, kita bisa membuatnya menulis ulang semuanya untuk menyelesaikan konversi, tetapi saya pernah menjelaskan bahwa ZFS bukan filesystem content-addressable storage (CAS) yang benar, jadi fitur seperti itu tidak ada dan tidak bisa dimiliki
Kalau ada yang memakai BTRFS di sini, bisa ceritakan bagaimana stabilitasnya belakangan ini? Dulu saya melihat banyak kasus yang menakutkan
Belum pernah ada masalah, tetapi agak menjengkelkan bahwa ruang kosong menurut BTRFS dan ruang kosong menurut bagian lain sistem operasi tidak selalu sama. Meski begitu, jarang sekali benar-benar menjadi masalah
Kecuali untuk beban kerja database, saya menganggapnya sebagai filesystem utama Linux sampai-sampai tidak mengerti kenapa orang memakai filesystem lain
Saya mencoba mengakses partisi yang rusak dari lingkungan instalasi paralel untuk memperbaikinya, tetapi tidak berhasil
Saya membutuhkan ini 2 bulan lalu. Saya harus memformat hard disk dari NTFS yang berisi lebih dari 10 TB data
Proyek yang keren
Akan cukup mengejutkan kalau sampai mendukung file yang memakai kompresi LZX
Ini berbeda dari kompresi file era Windows 2000, dan harus diaktifkan dengan
compact.exe /C /EXE:LZX (filename)https://github.com/search?q=repo%3Amaharmstone%2Fntfs2btrfs%...
Pernah mencobanya dulu, dan hasilnya adalah disk read-only. Semoga sudah lebih baik dibanding saat itu
Tingkat kene(k)atan yang terlihat di sini benar-benar menembus grafik
Cara standarnya adalah mencadangkan sebuah file besar di filesystem lama untuk metadata filesystem baru, lalu menelusuri semua file di filesystem lama dan memakai
fiemap()untuk membuat extent baru yang menunjuk ke data lama. Penulisan hanya dilakukan ke ruang yang sudah dicadangkanSuperblock baru ditimpa paling akhir, dan sebelum itu isi filesystem lama dan baru bisa diverifikasi apakah sama
Saat mengutak-atiknya waktu itu, saya melacak beberapa bug yang cukup menyebalkan, dan semoga sekarang sudah lebih stabil
Seperti yang dikatakan orang lain, ini bisa dilakukan secara sistematis dalam skala besar, tetapi tentu saja perlu kehati-hatian
“WinBtrfs adalah driver Windows untuk Btrfs, filesystem Linux generasi berikutnya. Ini diimplementasikan ulang dari nol, tidak berisi kode kernel Linux, dan seharusnya bekerja pada semua versi Windows sejak Windows XP. Ini juga disertakan sebagai bagian dari ReactOS, sistem operasi bebas.”
Kutipan ini diambil dari halaman pengelola ntfs2btrfs
https://github.com/maharmstone/btrfs
Saya tahu ini kasus yang berbeda, tetapi waktu yang terkandung dalam data itu jauh lebih berharga daripada disk baru. Secara pribadi, risikonya tidak sepadan. Kalau datanya tidak penting, atau backup-nya bagus dan ingin berkontribusi menangkap bug, mungkin bisa dicoba
Ini benar-benar keren, tetapi kemungkinan besar banyak orang baru tahu soal ini setidaknya seminggu setelah mereka menyelesaikan format drive NTFS yang sudah ditunda selama 2 tahun