あるディレクトリを別のディレクトリにマージする方法は?

あるディレクトリを別のディレクトリにマージする方法は?

あるディレクトリを別のディレクトリに「マージ」する方法があるかどうかを教えてください。

つまり、サブディレクトリ/ファイルを持たせてください/some/directories/structure。今私はそれ/etcを例えば「含む」したいと思います。つまり、すべてのサブディレクトリ/ファイルを/some/directories/structure(現在のコンテンツを置き換えてはいけません/etc/etcまたは他のディレクトリに追加する必要があります。

編集する:

「いいね」というディレクトリがあるとしましょうprog。これには複数の設定ファイルが含まれています。プログラムを開発するとき、このディレクトリは私のホームディレクトリのどこかに保存され、/etc作業システムにインストールする必要があります。今、私のプログラムをデバッグしたいのですが、それを実行するにはでprog利用可能なディレクトリ(私のホームディレクトリに保存されています)が必要です/etc。したがって、私の質問は次のようになります。 「仮想」方法でこれを行うことはできますか(コピー、移動などprog)に同期またはリンクすることもできますか/etc?たぶんそれをインストールする方法があるかもしれませんが(再び言うが)/etc

/etc私にとっての鍵はこれです:あなたが必要としなかったことを「忘れないでください」ということです。

ああ…もう私の質問がうまく解けたらと思います。 :)

答え1

私はあなたが望むものが何であるかを完全に理解していません。しかし、あなたが人形とマウントについて話すとき - どの方向にマウントをバインドすることを検討していると思いますか? !

バインドマウントとは何ですか?

Linuxバインドマウント

Linuxでは、バインドマウントをカーネル機能として使用できます。 --bindコマンドラインオプションまたはバインディングマウントオプションを渡すことで、mountコマンドを使用して1つを生成できます。次の2つのコマンドは同じです。

# mount --bind /some/where /else/where

# mount -o bind /some/where /else/where

ここで "デバイス" /some/where は、ディスクファイルシステムなどのディスクパーティションではなく、既存のディレクトリです。マウントポイント/else/whereは通常どおり既存のディレクトリでなければなりません。

ファイルシステムタイプはどちらにも指定されません。バインドマウントの実行には、元のマウントからカーネルデータ構造をコピーするファイルシステムドライバは含まれません。

答え2

データのサイズは不明ですが、rsyncソースからターゲットにデータを移動できます。次のコマンドはターゲットから何も削除しません。

rsync -avz /some/directories/structure/ /etc/

次のコマンドは、ターゲットディレクトリを変更します。

rsync -av --delete /some/directories/structure/ /etc/

/etc/存在しないファイルが削除されます。/some/directories/structure/

答え3

あなたの意図が何であるかはわかりませんが、おそらくあなたが必要とするのは/ etcのシンボリックリンクです。その場合はお問い合わせくださいman ln

答え4

私はこれを変更します。考えられるディレクトリ/etc/(そしておそらくそのディレクトリ内のサブディレクトリかもしれませんが知らない)の特定の設定ファイルにアクセスするには、開発中のコードが必要です。

ファイルシステムレベルで偽造する方法を探す代わりに、他の多くのアプリケーションと同様に、カスタマイズ可能な構成ディレクトリを提供します。

設定ファイルがまたは/home/user/prog/etc/に存在するとアプリケーションに通知し、/usr/local/etc/そのようにデバッグします。構成ディレクトリをハードコーディングすることは多くの理由で悪いことです。

コード内の構成を見つける場所を変更できる場合は、アクセスすることなく必要なだけ多くのテストを実行できます。/etc/これがあなたが経験している基本的な問題のようです。

関連情報