如何符号链接文件夹并排除某些文件

Jar*_*ite 5 linux exclude symlink hierarchy

我不是服务器专家(不幸的是),但对 linux 和 bsd 有很好的了解。我正在尝试符号链接 HLDS(游戏服务器)的多个实例,但需要排除某些文件夹和配置文件才能正确实现这一点。我需要这样做,因为 HLDS 会自动加载许多模组,并且设置一个例外来禁用模组并不适用于所有模组。

所以基本上我想要:

/home/user/hlds-install (基本安装)
/home/user/server1
/home/user/server2
等等...

然后能够手动将我排除的任何配置/模块放入服务器目录中,以便可以单独配置每个服务器。

谁能告诉我如何做到这一点,也许是某种 bash 脚本,以便我每次想要创建一个新的目标时都可以更改目标以运行它。我有很多事情要做,所以为每个人手动完成整个事情绝对不是一种选择,我只是为了更聪明地工作,而不是更努力!

谢谢 :)

And*_*rew 4

我假设你的意思是“对文件夹内的所有内容进行符号链接”......

从概念上讲,您想要类似的东西:

for each file in base folder not in exclude list
    create symlink in target folder pointing back to base folder
done
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

假设您还不知道,《高级 Bash 脚本指南》应该足以让您了解您想要的通配符(也许是find)以及如何将其转换为函数(也许是递归函数)。