Восстановление из Dropbox

Нестабильность современного десктопного линукса повергает меня в пучины отчаяния. Это я о Ubuntu и её производных. Конечно, глупо винить в этом разработчиков, при том что я сам не приложил усилий к улучшению ситуации. В некотором роде сегоднешняя нестабильность — плата за удобство для конечно пользователя. Ubuntu настолько проста и удобна, что я уже давно использую её как основную систему на нетбуке и на его стационарном собрате (ASRock ION по сути тот же нетбук, только в 2 раза больше и мощнее).

В моей Ubuntu 10.04 LTS на ION за несколько месяцев активного использования поотваливались почти все апплеты с панели GNOME, а у Jolicloud Linux (фактически, Ubuntu 9.04) спустя месяц использования отвалился заглавный экран, он же Google Chrome в режиме «окна-рабочего стола». Но это меркнет на фоне того, что у нового нетбука после совсем «мягкого» удара полетел жесткий диск — всего через 3 месяца после покупки.

Черт возьми, современное железо и домашний софт хрупче стекла: разваливаются на глазах от дуновения ветерка. Не то что старое доброе железо 2000-ых и стабильный софт из дебиана. На нижней полке шкафа, в черном чемоданчике, лежит жесткий диск Seagate Medalist на 3 гигабайта, и последний раз когда я его включал (а надо сказать, я пользовался им очень долго) он работал идеально. В том же чемоданчике лежат еще 4 диска, более современные, но не выдержавшие испытание временем.

В моих руках нынешнее железо не выживает долее полугода, и я принимаю это как факт. В былые времена добро, хранимое на жестких дисках было «священной коровой». Многогигабайтная коллекция музыки, фильмов, и анимэ тщательно собиралась, выменивалась и именовалась, а потеря её была настоящей трагедией. Сейчас же мой ежемесячный трафик в среднем — около 50 гигабайт (и это на 250 килобитах, да :). Объем диска ноутбука — 250 гигабайт. Если я буду сохранять весь скаченый из Сети мусор, то место кончится за пол года. Как раз к очередной запланированой смерти жесткого диска или выходу новой версии Ubuntu и разрушению старой.

Пришла облачная эпоха и все вернулось на круги своя — персональный компьютер снова превратился в терминал-приставку, а «мейнфрейм» стал всей Сетью. Правда «кэш-памяти» (HDD) пока довольно много, но в моих тараканях это оправдано малым каналом.

По-настоящему ценной информации на моем компьютере нет. Есть немного такой, потерять которую было бы неприятно — её совсем немного, буквально с десяток мегабайт исходников и этот блог. Но и потерять её не так то просто. Она продублирована на моих компьютерах и на двух репозиториях в Сети: Github и Dropbox (да, я храню git-репозитории в svn-репозитории :). Мусор и прочие медиа размазаны по торрентам на тысячах компьютеров — здесь не о чем волноваться.

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

Для быстрого восстановления я использую Dropbox и маленький скрипт — он позволяет привести компьютер в порядок буквально в «один клик». Для этого достаточно старого доброго Makefile, код которого приведен ниже.

Репозиторий Dropbox находится в директории ~/Dropbox. В ~/Dropbox/Dotfiles хранятся все основные настройки моих компьютеров.

HOME=$(shell echo $$HOME)
DOTFILES=$(HOME)/Dropbox/Dotfiles

На самом верхнем уровне директории именованы по машинам к которым относятся настройки.

UNIVERSAL=universal
NODE=$(shell uname --nodename)

Работа скрипта заключается в замене известных домашних поддиректорий и файлов настроек на ссылки на соответствующие файлы в ~/Dropbox/Dotfiles

~                      ~ на netbook
  Dropbox
    Dotfiles
      universal
        gitconfig      ← .gitconfig
        ssh            ← .ssh
          ...
        zshrc          ← .zshrc
        ...            ← ...
      netbook
        ...            ← ...
        mplayer        ← .mplayer
          config
          subfont.ttf
          ...
      desktop
        ...
        mplayer
          config
          subfont.ttf
          ...

Удаляем текущие файлы и создаем ссылки в репозиторий.

all:
        rm -f   $(HOME)/.config/user-dirs.dirs
        rm -f   $(HOME)/.face
        rm -f   $(HOME)/.gitconfig
        rm -fRv $(HOME)/.fonts
        rm -fRv $(HOME)/.ssh
        rm -fRv $(HOME)/.mplayer
        rm -fRv $(HOME)/.m2
        rm -f   $(HOME)/.Xdefaults
        rm -f   $(HOME)/.zshrc
        ln -fs $(DOTFILES)/$(UNIVERSAL)/config/user-dirs.dirs $(HOME)/.config/user-dirs.dirs
        ln -fs $(DOTFILES)/$(UNIVERSAL)/face       $(HOME)/.face
        ln -fs $(DOTFILES)/$(UNIVERSAL)/gitconfig  $(HOME)/.gitconfig
        ln -fs $(DOTFILES)/$(UNIVERSAL)/fonts      $(HOME)/.fonts
        ln -fs $(DOTFILES)/$(UNIVERSAL)/ssh        $(HOME)/.ssh
        ln -fs $(DOTFILES)/$(UNIVERSAL)/m2         $(HOME)/.m2
        ln -fs $(DOTFILES)/$(NODE)/mplayer         $(HOME)/.mplayer
        ln -fs $(DOTFILES)/$(UNIVERSAL)/Xdefaults  $(HOME)/.Xdefaults
        ln -fs $(DOTFILES)/$(UNIVERSAL)/zshrc      $(HOME)/.zshrc

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