Удобный способ резервного копирования настроек

Опубликовано 27.11.2024 в OpenBSD

Распробовал тут довольно изящный способ резервного копирования всевозможных настроечных (и не только) файлов из домашнего каталога текущего пользователя. Потребуется только git и ничего больше.

Первым делом, создадим каталог с говорящим названием и инициализируем git-репозиторий:

mkdir $HOME/.dotfiles
git init --bare $HOME/.dotfiles

а для пущего удобства настроим alias следующего вида:

alias dot='/usr/local/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'

Теперь настроим связь с удаленным репозиторием (например, на githud или gitflic - без разницы) и запилим настройку, запрещающую отслеживать неотслеживаемое, покуда мы явно не попросим впихнуть невпихуемое:

dot config --local status.showUntrackedFiles no
dot remote add origin git@github.com:ктотытам/.dotfiles.git

Всё, можно пользоваться. Например, так:

cd ~
dot add .xsession
dot commit -m "Прикопаю .xsession на долгую память"
dot push

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

Обойти это можно, например, вот как: клонировать репозиторий во временный каталог и накатить оттуда нужное хотя бы вот rsync'ом:

git clone --separate-git-dir=$HOME/.dotfiles https://github.com/ктотытам/.dotfiles.git tmpdotfiles
rsync --recursive --verbose --exclude '.git' tmpdotfiles/ $HOME/
rm -r tmpdotfiles

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