Синхронизация рабочих настроек

На всех своих рабочих/домашних UNIX* машинах я использую одни и те же конфигурационные файлы для VIM-a, Gdb, Zsh и прочего. После того как в один из них вносится изменение, хочется “легко и изящно” получить его на всех остальных машинах. С учетом того, что облачные хранилища получили очень широкое распространение, это сделать проще простого. Пишем небольшой bash скрипт и добавляем его в cron:

#!/bin/sh
# set -x-
FLAGS=-lzuogthvr
SYNC_LIST=".vim .vimrc .gdbinit .gdb_stl .zshrc confsync.sh"
SOURCE_DIR=~
EXCLUDE_LIST=""
EXCLUDE_COMMAND=""

if [ -z "$BACK_UP_DIR" ]; then
    BACK_UP_DIR=~/Dropbox/backup/
fi

if [ ! -d "$BACK_UP_DIR" ]; then
    mkdir "$BACK_UP_DIR"
else
    rsync $FLAGS --update --progress $BACK_UP_DIR/ $SOURCE_DIR
fi

for s in $EXCLUDE_LIST; do
    EXCLUDE_COMMAND="$EXCLUDE_COMMAND --exclude "$s""
done

for d in $SYNC_LIST; do
    rsync $FLAGS --update --progress $d $BACK_UP_DIR $EXCLUDE_COMMAND
done

Leave a Reply