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

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 - два хороших инструмента для синхронизации файлов (и многое другое ..)

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

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

emjayess
источник