php*_*_qq 7 backup etc symlink
我不经常切换机器,但我不想被绑定到一台机器。我不升级硬件的原因通常是因为我不想设置新机器。
到目前为止,我已经努力将大部分内容集中在主目录中,以便轻松备份和部署在新计算机上。
最大的问题是那些(可能有数百个)配置文件,我已经对其进行了一些(通常是微小的)更改,但如果没有它们在新机器上,任何东西都无法工作。
我有一个想法,制作一个脚本,从 etc 中抓取文件,将它们放在我的主目录中,并用符号链接替换原始文件。然后我会有另一个脚本,在新机器上将检查抓取的文件并用符号链接替换原始文件。
我不确定这听起来有多令人困惑,所以这里有一个简单的例子。
#!/bin/bash
FILE=$(realpath $1)
TARGET=$(realpath ~/snatched)$FILE
mkdir -p $TARGET
mv $FILE $TARGET
ln -s $TARGET $FILE
Run Code Online (Sandbox Code Playgroud)
然后运行
snatch /etc/hosts
Run Code Online (Sandbox Code Playgroud)
将在原始位置放入并创建符号链接/etc/hosts
。~/snatched/etc/hosts
我担心水下的石头,任何会让我将来后悔的事情,基本上都是来自更有经验的用户的建议。
谢谢!
wal*_*tor 19
不!
/etc
将破坏符号链接。/etc
文件视为攻击的标志,因此无法工作。etckeeper
、tar
、 ...)可以提供帮助。最后,这是Again the Rules(违反标准)!
请参阅文件系统层次结构标准https://refspecs.linuxfoundation.org/fhs.shtml
,或阅读man hier
。
它解释了事情的去向。
tel*_*coM 15
如果您的主目录位于根文件系统中,那么它可能会起作用。大多。有一些非常重要的警告。
某些安全敏感文件(例如/etc/sudoers
)如果替换为符号链接可能会变得无效。这是因为使用该文件的子系统或工具会专门验证该文件的实际路径。如果它找到符号链接,它通常会假设某种安全漏洞尝试正在进行中,并且通常会完全忽略符号链接文件的内容并回退到默认值或只是拒绝所有内容,只是为了安全(安全)侧。
但是,如果您有/home
一个单独的文件系统(这通常是推荐的方式),那么请考虑在/home
尚未安装时启动时会发生什么。在引导进行到安装点之前,每个“抢夺”的文件都将无法读取(因为符号链接损坏)/home
。如果引导过程的任何早期步骤需要这些文件,则该步骤很可能会失败。
一个极端的例子是,如果您“抢夺” /etc/fstab
:/home
文件系统尚未安装,系统将无法读取/etc/fstab
,因此不知道需要将特定文件系统安装到/home
。系统将仅在安装根文件系统的情况下启动,任何依赖于/home
可用的服务都可能会失败。
如果您正在修改的文件被包管理系统视为“配置文件”,因此它们不会被覆盖,那么您所建议的内容可能在某些情况下有效。
例如,如果您的主目录是 NFS 挂载的,那么您应该预料到会出现故障,因为/etc/hosts
无法解决并且 NFS 挂载可能会失败。即使您在 fstab 中使用 IP 地址,也可能会出现依赖性问题,导致出现问题。
如果您的主目录不是 NFS,那么您就需要处理“保持同步”问题。
更好的解决方案可能是使用配置管理系统,例如 ansible,您可以在其中将“剧本”(或脚本或其他内容)应用于所有计算机。因此,您不必直接修改 /etc/hosts,而是修改 playbook 配置,然后将其应用到所有计算机。
或者有一个本地“/etc/myconfig”类型目录和rsync
来自权威来源的内容(类似于配置解决方案,但结构较少)。