同步 Linux /etc/ 目录

同步 Linux /etc/ 目录

我有一台装有 Linux 的虚拟机(Ubuntu 服务器),用作其他机器的原型。有时我会在原型系统中进行更改,并希望在其他机器上导入这些更改。

我了解 Puppet、cfengine 和 FAI,但想要一些简单的东西,例如在需要时可以通过 ssh 工作的 rsync 脚本。

主要目标是 /etc/ 目录。但我不想同步一些私人文件,例如 /etc/passwd /etc/shadow 等。我不知道所有这些。

对我的任务有没有什么提示?也许有人有这样的 rsync 脚本。

答案1

一个简单的解决方案可能是设置 git。

  • 在您的目录中设置一个 git 存储库/etc
  • 设置一个忽略文件来排除您不想迁移到远程系统的内容。
  • 将所有未被忽略的内容添加到您的存储库中。
  • 在生产时根据需要从开发存储库中提取。

答案2

您已经有答案了。rsync 可以做您想做的事情,它会在您需要时通过 ssh 运行,并且可以轻松忽略您不想同步的文件:

rsync -avP source:/etc/ /etc/ --exclude-from list-of-files-to-exclude

只需将要排除的文件列表添加到list-of-files-to-exclude文件中即可。例如:

$ cat list-of-files-to-exclude
/passwd
/shadow

当然,我仍然强烈推荐版本控制,以及一些更复杂的工具,如 puppet。并确保你注意文件所有权和权限。

相关内容