На всех своих рабочих/домашних 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
# 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