Windows用のUnionFSのようなファイルシステム


12

私は、Windows 7のUnionFSのように機能するものを探しています。私のユースケース:読み取り専用ディレクトリにきれいなコード作業ディレクトリを作成し、論理的に同じ場所に物理的に保存されたユニオンファイルシステムでコンパイルします別のディレクトリ。

ライブラリは、Windows上で同様にUnionFSの回答として受け入れられたにもかかわらず、この方法では機能しません。フォルダーを仮想的にマージします。トップレベルのディレクトリのみを1か所に表示します。

コード自体は巨大(2GBのデータ)であり、ビルドサーバーのすべてのビルドでコピーすることは避けたいと思います。


ああ、おっと。:-/私はまったく同じ問題を自分で解決しようとしていますが、ほとんど注意深く読みませんでした。コメントを削除します。私は、Windowsプラットフォームにほとんど慣れていません。:-/
Omnifarious

回答:


2

これを偽造するためにシンボリックリンクを使用できますか? http://en.wikipedia.org/wiki/NTFS_symbolic_link 正確な質問に答えているわけではありませんが、指定したユースケースは解決すると思います。


どのようにそれができるのかわかりません...説明してもらえますか?
リオリ

ビルドツリーの構造がわかりませんが、src、src / bin、src / objのようなものだと仮定すると、binとobjをコードを配置したい場所へのシンボリックリンクにできます。ビルドがこれらのフォルダーを完全に削除していないことを確認してください。または、srcを「読み取り専用」へのシンボリックリンクにしてから、読み取り専用のリンクに戻ります。どちらにしても、それを機能させることができるはずです。シナリオが完全に抜けていない限り。
MikeBaz-MSFT

私はビルド手順を制御せず、どこにでも書き込むことができます。
リオリ

@liori:このユースケースでは、ディレクトリを再現し、すべてのファイル(シンボリックリンクなど)のシンボリックリンクを作成できますcd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;
ジル 'SO-悪であるのをやめる

@Gilles:コピーはそれほど悪い解決策ではないと考えさせてくれます...(答えに加えてください)
リオリ

2

シンボリックリンクで貧乏人のユニオンを作成できます。ソースのディレクトリ構造を再現しますが、ファイルのリンク(シンボリックまたはハード)を作成します。ビルドシステムがソースファイルを変更しようとしない限り、これは目的に適しているはずです。

GNU cpを使用すると、cp -alまたはと同じくらい簡単cp -asです。しかし、Windowsリンクを理解するGNUツールの移植版があるかどうかはわかりません。

mklinkコマンドを呼び出す必要がある場合は、POSIXツールを使用して実行できます(警告、ブラウザーに直接入力):

cd SOURCE
find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +
find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;

私はPowershellを含むネイティブのWindowsの方法があると思いますが、それがどのように見えるのか分かりません。ディレクトリツリーが大きく、ディスクが高速な場合は、Windowsでの分岐が遅くなる傾向があり、上記のコマンドは多くの分岐を必要とするため、調査する価値があるかもしれません。


ネイティブの方法は、sysinternals for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %Fjunctionツールを使用したのようなものです。
–MSalters

@MSaltersシンボリックリンクはWindowsにネイティブになりました。NTFSジャンクションは同じものではありません
ニックホエール

@NickWhaley:実際、ジャンクションは本質的にハードリンクです。
–MSalters

2

「UWFはStandard 8の新機能であり、Windows 8の一部としては使用できません。」おそらく、これはエンドユーザーのWindowsバージョンで利用可能です。
ダニエルB


他の場合には便利ですが、これには役立ちません。知っておくべきことと注目に値する。
ロバートWmルーディシュエリ

1

私はこれを見つけましたが、私はそれがどれほどうまく機能するのか本当に知りません:


Google Codeにアーカイブされたプロジェクトはメンテナンスされていません。更新されたバージョンをどこかで探したいかもしれません。おそらくフォーク。
ロバートWmルエディスエリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.