Скрипт для синхронизации конфигов

По мотивам вот этого моего вопроса родился скрипт для синхронизации конфигов на не кривом, но гибком языке Python :)

Как пользоваться

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

Пример

Вот образец файла list:

/etc/fonts/local.conf
~/.gitconfig
~/.config/xfce4/terminal/terminalrc
~/.local/share/mc/skins/default.ini

А вот выросшее после синхронизации деревце (ветку .git я отрезал, чтобы не сбивала с толку):

.
├── etc
│   └── fonts
│       └── local.conf
├── home
│   └── user
│       ├── .config
│       │   └── xfce4
│       │       └── terminal
│       │           └── terminalrc
│       ├── .gitconfig
│       └── .local
│           └── share
│               └── mc
│                   └── skins
│                       └── default.ini
└── sync
    ├── list
    └── sync.py

Хомяковые конфиги в список нужно заносить с тильдой. При синхронизации все они кладутся в подкаталоги home/user/ и достаются оттуда же. Логин root тоже можно использовать, хотя это и нежелательно, потому что конфиги в нашем git-е по-прежнему будут лежать в home/user/.

Файлы и директории, находящиеся вне /home/user/ рекомендуется выносить в отдельный список, чтобы потом не было проблем с правами.

Ключи

sync.py [-h] [-d | -m] [--tool TOOL] list

-d выводит diff файлов.

-m запускает meld или kdiff3 для интерактивного сравнения и изменения различающихся файлов и каталогов.

--tool позволяет указать утилиту для сравнения или вывода изменений, например vimdiff. Работает с любым из предыдущих ключей.

list задаёт файл со списком конфигов. Не обязательно держать его рядом со скриптом, путь и название могут быть любыми.

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

Комментарии (RSS)

Слушай, вот я нуб тот еще, но как ни странно, мне тоже нужна синхронизация! Но раз уж она есть, не мог бы ты чуть подробнее описать процесс? Спасибо.

Ответить Отменить ответ

Ну, например, самое первое даже: "Создаёте директорию с git-репозиторием" Никогда с git не работал, где какую директорию создавать не понимаю. То ли на сайте git'а разбираться нужно, то ли у себя на машине.

Да и с остальным тоже не особо понятно. Спасибо.

Ответить Отменить ответ

git тут как дополнительная плюшка идёт, он нужен только для контроля версий, поэтому можно обходиться и без него. Но лучше про git почитать, тогда многое понятней станет. В данном случае достаточно создать папку в любом месте, это будет хранилище под конфиги.

Пушить конфиги на github тоже совершенно не обязательно, более того, в некоторых конфигах могут содержаться приватные данные, например, список последних файлов в конфиге geany.

Ответить Отменить ответ

Ох уж эти велосипедисты. Все давно уже изобретено до нас. Например, puppet.

Ответить Отменить ответ

Как только увидел, что оно на Руби, сразу такая лень разобрала... :) Для "промышленного" применения оно наверняка очень удобно, а когда надо два с половиной конфига синхронизировать раз в полгода, то лучше уж велосипед. Опять же, практика ковыряния в Питоне мне не повредила.

Ответить Отменить ответ