我有一台装有 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。并确保你注意文件所有权和权限。