web-dev-qa-db-ja.com

Mac OS X用のコピーオンライトファイルシステムはありますか?

私はユキヒョウにいます。 MacFUSEとFuse4xの両方をインストールしています。インストールできるコピーオンライトファイルシステムはありますか?

Fuse4xのインクルードとライブラリを使用してUnionFS-Fuse0.25をビルドしようとしましたが、次のエラーが発生します。

error: ‘AT_SYMLINK_NOFOLLOW’ undeclared

OS Xがこの定数を定義していないようです(/ usr/includeをすべて取得しましたが、見つかりませんでした)。

また、OS Xの組み込みユニオンマウント(mount -o union)を使用してみましたが、期待どおりに動作しませんでした。ユニオンオプションを使用して2つのファイルシステムを(dmgファイルを使用して)同じマウントポイントにマウントしました。最初のものは読み取り専用で、いくつかのファイルを含むd1というディレクトリがありました。 2番目にはその名前のディレクトリがありませんでした。ユニオンマウントのd1にファイルを作成しようとすると、読み取り専用のfsエラーが発生しました。 fs#2の両方で、ディレクトリとその下のファイルが自動的に作成されることを期待していました。次に、fs#2でd1を作成しようとしましたが、fs#1のd1の内容が完全に非表示になりました(ディレクトリが空に見えました)。基本的に、結合動作はファイルシステムのルートレベルでのみ発生し、再帰的ではありませんでした。

組み込みのユニオンマウント動作を複製してみたい場合は、これを使用しました ガイド

私はコピーオンライトファイルシステムに精通していません-私の期待はコピーオンライトファイルシステムがどのように機能するかと一致しますか?

4
Kelvin

もう少し調査を行った後、事前に作成されたソリューションをあきらめて、自分で作成する必要があるかもしれません。

PyFilesystem 可能性があるように見えます、特にMultiFSfsタイプ。そのFuseコードには Fuse4xで動作するパッチ が必要です。

MultiFSのドキュメントでは、書き込み可能なfsにディレクトリが作成されるかどうかは明確ではありませんが、試してみます。

[〜#〜]更新[〜#〜]

Iconv CDLLがロードされる前にこの行を移動すると、パッチによってバグが発生しました。

_libfuse = CDLL(_libfuse_path)

直後に移動するだけで、OS Xで動作するはずです(一般的な修正では、if _system inブロックの後に行を追加する必要もあります)。

だから私はMultiFSを試しましたが、書き込み可能なFSに欠落しているディレクトリが作成されませんnot。しかし、追加するのは簡単だと思います(私はpythonエキスパートではありませんが)。また、読み取り専用FSの1つでファイルを上書きまたは追加しようとしても、書き込み可能なパスに対応するパスを一貫して作成します。多くのエラーが発生してハングします(その後、Fuseプロセスが大量のCPUを使用し始めます)。ただし、このソリューションは依然として非常に有望に見えます。

3
Kelvin