私は(残念ながら)サーバーの第一人者ではありませんが、LinuxとBSDについては十分な知識があります。 HLDS(ゲームサーバー)の複数のインスタンスをシンボリックリンクしようとしていますが、これを適切に実現するには、特定のフォルダーと構成ファイルを除外する必要があります。 HLDSは多くのmodを自動的にロードするため、この方法で行う必要があります。modを無効にする例外を設定しても、すべてのmodで機能するわけではありません。
だから基本的に私は欲しい:
/ home/user/hlds-install(基本インストール)
/home/user/server1
/home/user/server2
等...
次に、除外された構成/変更をサーバーディレクトリに手動で配置して、各サーバーを個別に構成できるようにします。
誰かがこれを行う方法を教えてもらえますか?おそらく、新しいターゲットを作成するたびにターゲットを変更して実行できるようにするための、ある種のbashスクリプトです。私にはかなりの数がありますので、それぞれに対して手動ですべてを行うことは絶対に選択肢ではなく、より賢く、難しくはありません!
ありがとう:)
私はあなたが本当に「フォルダ内のすべてをシンボリックリンクする」という意味だと思います...
概念的には、次のようなものが必要です。
for each file in base folder not in exclude list
create symlink in target folder pointing back to base folder
done
これを実現するためのbashロジックは次のようになります
#! /bin/bash
exclude=( "foo.conf" "bar.conf" )
for file in *; do
for (( index = 0; index < ${#exclude[@]}; index++ )); do
if [[ ${file} != ${exclude[${index}]} ]]; then
ln -s ${file} ${target}/${file}
fi
done
done
まだわからないと仮定すると、 Advanced Bash-Scripting Guide は、必要なグロブ(おそらくfind
)とそれを関数(おそらく再帰的なもの)に変換する方法を理解するのに十分なはずです。 。
xstow を(乱用)使用できます。このプログラムは、必要なものに近いシンボリックリンクのフォレストを作成するように設計されています。一部のファイルを除外するオプションはありませんが、ハッキングすることはできます。サーバーごとに:
cd .../targets/server1 touch .exclude for x infiles to exclude ; do mkdir -p "$(dirname" $ x ")"; ln .exclude "$ x"; done xstow -d .../sources-t。 server1-specific-files xstow -f -d .../sources-t。 base-install find -samefile .exclude -exec rm {} +