我有一個帶有 Linux(Ubuntu 伺服器)的虛擬機,它用作其他機器的原型。有時我會在原型系統中進行更改,並希望將這些更改匯入到其他機器上。
我了解 Puppet、cfengine 和 FAI,但想要一些簡單的東西,例如 rsync 腳本,它可以在需要時透過 ssh 工作。
主要目標是 /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 這樣更複雜的東西。並確保您注意文件所有權和權限。