
ディレクトリ a と b が 2 つある場合、ファイルをコピーせずに、a と b の両方のコンテンツがあるように見えるディレクトリを作成する便利な方法を提案してもらえますか? 現時点では、ln -s * を使用して、多数の sym リンクを作成し、完了したら sym リンクを削除しています。ただし、サブディレクトリのコンテンツがマージされているように見える方が望ましいのですが、sym リンク メソッドでこれを管理するには、多少の調整が必要になる場合があります。
アプリケーションによっては、結果のディレクトリが読み取り専用であっても問題ありません。
答え1
ディレクトリを効果的にマージするにはユニオンFS2 つのディレクトリ (このコンテキストではブランチと呼ばれます) を 1 つのマウント ポイントにオーバーレイします。
UnionFS にはいくつかの実装があります。ユニオンFsFuseこれはアプリケーション (カーネル パッチではなく) であるため、最も単純なものの 1 つです。
ウェブサイトにはアーカイブへのリンクが含まれています。ほとんどのディストリビューションでは、ソース コードのコンパイルは簡単にできるはずです。
例えばUbuntuでは、パッケージをインストールするだけで十分ですユニオンFSヒューズ次のコマンドを実行します。
sudo apt-get install unionfs-fuse
インストールが完了したら、ディレクトリのオーバーレイに進むことができます。さまざまなオプションがあります。最も基本的なオプションを簡単に説明します。
コマンド
unionfs-fuse foo:bar baz
ディレクトリの内容をオーバーレイするフーそしてバーディレクトリ内バズ。1
このオーバーレイは読み取り専用です。バズ結果的に許可が拒否されました。エラー。ただし、内部のファイルの作成と変更は可能です。フーそしてバー彼ら自身。
衝突は固定された方法で処理されます: ファイルが上位ブランチに存在する場合 (フー)、下位ブランチの同じ名前のファイルよりも優先されます(バー)。
コマンド
union-fuse foo=RW:bar=RO baz
作るフー書き込み可能でバー(読み取り専用)。フー可能になりますが、バー新しく作成されたすべてのファイルはバズ登場するフー。
コマンド
union-fuse -ocow foo=RW:bar=RO baz
は最後のコマンドに似ています。コピーオンライトオプション(
cow
)は、バー内部バズファイルの修正されたコピーがフー(またはその他の上位レベルの書き込み可能なブランチ)。コマンドで
union-fuse foo=RW:bar=RW baz
すべて変更できます。新しいファイルはトップブランチ(フー)。
コマンド
union-fuse foo=RO:bar=RW baz
次のファイルを変更できるバー内部バズただし、新しいファイルは作成できません。
コマンド
sudo umount baz
ユニオンマウントを解除します。
参照:男のユニオンFSヒューズ
1 バズこのコマンドを実行する前に存在している必要があります。これは以降のすべてのコマンドにも適用されます。