Синхронизация файлов конфигурации с несколькими компьютерами


15

У меня есть несколько разных Linux-машин и много конфигурационных файлов (и папок) на каждой.

Например:

~/.ssh/config
~/.config/openbox/rc.xml
~/.config/openbox/autostart.sh
~/.scripts/ ( folder )
~/.bashrc
...etc

Есть ли простой и элегантный способ синхронизировать эти файлы между моими компьютерами (у одного нет доступа в интернет) ?

Кроме того, для некоторых файлов потребуется более продвинутый процесс синхронизации, так как они должны будут немного отличаться ... например:

У моей настольной клавиатуры есть ряд горячих клавиш, которых у моего ноутбука почти нет. Я использую, XF86Mailчтобы открыть Thunderbird на моем рабочем столе, но Meta+ Mна моем ноутбуке.

Мой домашний рабочий стол и рабочий стол больше ориентированы на «несколько пользователей», где мой ноутбук предназначен только для меня. Так что на моем ноутбуке я склонен хранить файл rc.xml для openbox по адресу, /etc/xdg/openbox/rc.xmlно на настольных компьютерах по адресу~/.config/openbox/rc.xml

Ответы:


10

Держите файлы под контролем версий. Это имеет множество преимуществ, в том числе упрощение синхронизации файлов (фиксация на одном компьютере, обновление на других) и сохранение истории изменений (чтобы вы могли легко узнать, что сломало программу, которая работала в прошлом месяце).

Я использую CVS и синхронизирую репозитории с Unison или sneakernet, но это потому, что я делал это с тех пор, как появился широко распространенный контроль версий. Любой, кто начинает сейчас, должен использовать соответствующий распределенный инструмент управления версиями , такой как базар, дарк, мерзавец, меркуриал, ...

Управлять файлами, которые должны различаться на разных машинах, всегда немного сложно. Если язык конфигурации допускает условные выражения, используйте их. В противном случае, если есть механизм включения, используйте его для разделения файла конфигурации на машинно-зависимую часть и общую часть. Храните все машинно-зависимые детали в отдельном каталоге (что-то вроде ~/.local/NAME/), на который всегда ссылается символическая ссылка ( ~/.here-> local/NAMEна каждой машине). У меня есть несколько файлов, которые генерируются сценарием в общей части из параметров, хранящихся в машинной части; это предотвращает изменение этих файлов косвенно через интерфейс конфигурации GUI. Избегайте настроек /etc, синхронизировать между машинами сложнее.


Я использую gitдля этого. мой репо для ~/.etcменя также есть ~/.usrи в ~/.varЯ хочу , чтобы эти каталоги были стандартны , KDE будет прекратить бросать все TMP / вар / конфигурации / и т.д. файлы в .kde. так трудно понять, где то, что я хочу, находится в моем домашнем каталоге.
ксенотеррацид

5

Я согласен с ответом контроля версий , но еще один метод, с которым я недавно экспериментировал, - это Dropbox . По сути, это система контроля версий, которая автоматически синхронизируется между всеми вашими компьютерами, поэтому, если вы отредактируете файл на одном компьютере, вы увидите изменения, отраженные на других ваших компьютерах, через пару секунд, без необходимости фиксировать на первом и обновлять на последний.

Их бесплатный базовый план составляет 2 ГБ, поэтому я использую его для создания версий моих файлов конфигурации и логов чата.


Основное преимущество, которое я вижу здесь, заключается в том, что его намного проще настроить.
Ашеш Кумар Сингх,

3

Puppet и Cfengine - два хороших инструмента для синхронизации файлов (и многое другое ..)


Есть также шеф-повар, но эти инструменты действительно предназначены для управления большим количеством машин, вероятно, излишним для 2 или 3 систем
xenoterracide

1

Сегодня можно получить лучшее из первого (dvcs) и второго (dropbox) ответов с помощью sparkleshare , которая обеспечивает работу в стиле dropbox с хранилищем на основе git за кулисами.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.