1 ポイント 投稿者 GN⁺ 2024-12-01 | 1件のコメント | WhatsAppで共有

Ntfs2btrfs

Ntfs2btrfsは、MicrosoftのNTFSファイルシステムをオープンソースのファイルシステムであるBtrfsへ変換するツール。ext2を変換するbtrfs-convertに似ている。変換後、元のイメージはimage/ntfs.imgとして保存され、変換結果を維持したい場合はこれを削除して空き容量を確保できる。安定していると思われるが、問題が発生した場合の責任は負わない。Windows向けBtrfsファイルシステムドライバであるWinBtrfsも興味深い。Eric Biggersに感謝する。彼はWindows 10の「WOF圧縮データ」のリバースエンジニアリングに成功しており、そのコードを使用している。

使い方

  • Windows: 管理者コマンドプロンプトでntfs2btrfs.exe D:\を実行
    • ブートドライブ、または使用中のページファイルがあるドライブでは動作しない
    • WinBtrfsを使用する場合、imageサブボリュームの読み取り専用フラグを解除しないと削除できない
  • Linux: root権限でntfs2btrfs /dev/sda1を実行

インストール

  • Windows: Releasesページから最新のZipファイルをダウンロード、またはScoopを使用
  • Linux:
    • Arch
    • Fedora (Conan-Kudoのおかげで利用可能)
    • Gentoo - guruリポジトリのsys-fs/ntfs2btrfsとして利用可能
    • Debian (alexmyczkoのおかげで利用可能)
    • Ubuntu (alexmyczkoのおかげで利用可能)
    • openSUSE (David Sterbaのおかげで利用可能)
  • その他のディストリビューションやオペレーティングシステムでは、自分でコンパイルが必要

変更ログ

  • 20240115
    • GCC 14でのコンパイル問題を修正(-Werror=incompatible-pointer-typesがデフォルトで有効化)
  • 20230501
    • btrfs checkで診断されない順序の問題を修正
    • 誤ったレベル値でメタデータ項目が書き込まれる問題を修正
    • 名前が長すぎるADSをスキップ
  • 20220812
    • チェックサム計算をスキップする--no-datasumオプションを追加
    • LXSS / WSLメタデータを保持
    • 小文字のドライブレターが認識されない問題を修正
    • ディスク最後の1メガバイトにファイルがあるときの破損問題を修正
  • 20210923
    • (Btrfs) 圧縮サポートを追加(zlib, lzo, zstd)
    • 他のハッシュアルゴリズムのサポートを追加: xxhash, sha256, blake2
    • NTFSへのロールバックのサポートを追加
    • 多数のinodeがあるボリュームで変換速度を向上
    • スーパーブロック位置に断片化ファイルがある場合のバグを修正
    • セキュリティ記述子読み取り時のバッファオーバーフローを修正
    • btrfs checkで検出されないファイルシステム破損問題を修正
  • 20210523
    • 大きな圧縮ファイルの処理を改善
  • 20210402 (ソースコード専用リリース)
    • 非amd64アーキテクチャでのコンパイル問題を修正
  • 20210105
    • NTFS圧縮のサポートを追加
    • 「WOF圧縮データ」のサポートを追加
    • スパースファイルによる問題を修正
    • その他のバグ修正
  • 20201108
    • エラー処理を改善
    • NTFSが破損している、またはクリーンでない場合のメッセージを改善
    • 再配置処理を改善
  • 20200330
    • 初回リリース

コンパイル

  • Windows: 最新のMSVCバージョンでソースディレクトリを開き、CMakeLists.txtを右クリックしてコンパイル
  • Linux:
    • mkdir build
    • cd build
    • cmake ..
    • make
    • libfmtのインストールが必要 - パッケージマネージャにあるはず
    • 圧縮サポートにはzlib、lzo、zstdが必要 - パッケージマネージャにあるはず。無効化するにはcmakeオプションWITH_ZLIB、WITH_LZO、WITH_ZSTDを参照

動作するもの

  • ファイル
  • ディレクトリ
  • シンボリックリンク
  • その他の再解析ポイント
  • セキュリティ記述子
  • 代替データストリーム
  • DOS属性(隠し、システムなど)
  • 元のNTFSイメージへのロールバック
  • LXSSメタデータの保持

動作しないもの

  • Windowsの古い拡張属性(未使用)
  • 大きなADS(16KB超)(未使用)
  • 大文字小文字の区別フラグの保持
  • 非標準のクラスタサイズ(4KB以外)
  • 暗号化ファイル

WindowsをBtrfsで起動できるか

  • 可能だが、特定の条件を満たす必要がある。Quibbleを参照。

1件のコメント

 
GN⁺ 2024-12-01
Hacker Newsの意見
  • 「hold-my-beer」度がかなり高い

    • とても危険だったり挑戦的だったりする行動をするときに使う表現
  • 以前試したときは読み取り専用ディスクになった

    • 改善されていることを願う
  • とてもクールだが、人々がこのニュースを知るまで少なくとも1週間はかかるだろう

    • 2年間先延ばしにしていたNTFSドライブのフォーマットを終えてから初めて知ることになるだろう
  • ZFSに適用する方法を考えている

    • 他のファイルシステム種別を読み、ZFSブロックポインタを合成するレイヤーを追加する方式で可能だろう
    • ZFSにブロックポインタ書き換え機能があれば、全体を書き換えて変換を完了できるだろう
    • ZFSは適切なCASファイルシステムではないため、ブロックポインタ書き換え機能を持てない
  • LZX圧縮が適用されたファイルをサポートするなら非常に驚くだろう

    • Windows 2000時代のファイル圧縮と混同しないこと
    • compact.exe /C /EXE:LZX (ファイル名) コマンドで有効化しなければならない機能
  • NTFSは安定していて、btrfsより速く、同じ機能を備えている

    • 誰かがNTFSを置き換えようとする理由は理解しにくい