Удобный способ резервного копирования настроек
Опубликовано 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
Безусловно, существует чертова уйма специализированных программ, умеющих делать вот это самое и многое еще другое, и делать гораздо лучше - по расписанию, в фоне, с песнями и плясками - но мне милей самые простые ручные решения.