Видео смотреть бесплатно

Смотреть русское с разговорами видео

Официальный сайт pharma-24 24/7/365

Смотреть видео бесплатно

30.09.09 02:12

h0rr0rr_drag0nРезервное копирование конфигурационных файлов.

Не так давно, в результате нелепой ошибки, я чуть было не потерял свой .vimrc, который я пишу чуть ли не с 11 класса. Высрав огромное количество кирпичей Переволновавшись, я решил наконец-то запихать все свои конфиги в какую-нибудь систему контроля версий, чтобы обезопасить себя от дальнейших возможных ошибок.

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

На канале [email protected] мне посоветовали использовать mercurial – она выгодно отличается своим быстродействием от остальных систем контроля версий.

Сохранять конфиги я решил на своем шелл-аккаунте – ненадежно хранить все это локально – диск может сдохнуть, его могут украсть и т.п. Вероятность возникновения подобного события у хостера – минимальна.

Для начала создадим общий для всех репозиториев каталог, а затем создадим в соответствующем подкаталоге нужный нам репозиторий. Выполним на удаленном хосте:

cd
mkdir hg
mkdir hg/configs
chmod -R 700 hg


На локальной машине, с которой будем сохранять конфиги:

hg init ssh://[email protected]/hg/configs


Теперь для проверки работоспособности синхронизируем репозиторий с локальной машиной (репозиторий будет создан в новом каталоге – hg наотрез отказывается создавать репозиторий в ~):

cd
hg clone ssh://[email protected]/hg/configs
mv configs/.hg .
rm -rf configs


Теперь добавим в репозиторий какой нибудь файл.

~$ hg add .vimrc
~$ hg commit -m 'Initial vimrc commit'
No username found, using 'drag0n@drag0n-laptop' instead
~$ hg push
[email protected]'s password:
pushing to ssh://[email protected]/hg/configs
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files


Все. Добавим таким образом все необходимые конфиги в наш репозиторий.

Если мы обновили какой-нибудь файл, то его нужно вначале закоммитить, а потом отослать изменения на сервер:

hg commit -m 'message' filename
hg push


Для получения свежей версии файлов из репозитория, выполним в каталоге, который мы ранее синхронизировали с репозиторием:

hg pull


Просмотреть список измененных файлов можно при помощи следующей команды:

hg status -A | grep '^[^?]' | less


Она выведет список файлов и однобуквенный статус каждого файла в репозитории:
  • M – файл был изменен
  • A - файл был добавлен
  • R – файл был удален
  • ! – файл был удален, но продолжает числиться в системе контроля версий
  • C – изменения в файле отсутствуют
  • I - файл игнорируется системой контроля версий


Под все это хозяйство я добавил себе парочку алиасов:

1
2
3
4
5
6
7
8
9

#my mercurial repo with configs
alias hgcheck='hg status -A | grep ''^[^?]'' | less'
alias hgpull='hg pull'
function hgpush {
        hg commit -m "$1"
        hg push
}
 


По материалам блога Дракон-линуксоид


Теги:

xcellnt 30.09.09 03:33 # +0
Если задачи попроще можно попробовать http://backintime.le-web.org/ .
shidoh 30.09.09 07:11 # +2
Ты прямо мои мысли читаешь)...как раз думал о бекапе конфигов, и как раз есть аккаунт на shell.tor.hu
cppmm 30.09.09 08:16 # +0
А я обычный svn использую. Нормально работает. Хранится всё на домашнем рутере и дополнительно на втором компе.
xT 30.09.09 10:07 # +2
она выгодно отличается своим быстродействием от остальных систем контроля версий
я жутко сомневаюсь, что ты ощутишь это быстродействие с килобайтными файлами-конфигами =)
lockie 30.09.09 20:18 # +0
Хм, конфиги в репе - это труъ. Надо будет на выходных попробовать =)
xT, Ваш сарказм меня пугает. Неужели всё так плохо с mercurial?
derfenix 30.09.09 22:03 # +1
Имелось в виду, что такие размеры и через диалап по фтп можно синхронизировать, не особо замечая медлительности :)
xT 30.09.09 22:30 # +0
незнаю насколько плохо с mercurial =) не пользовался им ни разу
derfenix меня правильно понял =)
derfenix 30.09.09 10:51 # +1
Исправь: mdkir hg на mkdir hg %)
lwilis 30.09.09 22:19 # +1
mercurial сохраняет права на файлы? Скажем, если права 600, 440
digiwhite 30.09.09 23:45 # +1
Я конечно не сильно уверен, но ИМХО за права(атрибуты файла) отвечает не система контроля версий, а ФС. По крайней мере за те, что вы имеете в виду.
lwilis 01.10.09 15:40 # +0
за права(атрибуты файла) отвечает не система контроля версий, а ФС
вот именно - система контроля версий (СКВ) не отвечает за права на файлы.
Но в топике предлагается использовать СКВ для ведения базы конфигов. Некоторые конфиги имеют права отличные от 644 (это умолчание для всех файлов проекта). СКВ не хранит данные о правах, следовательно при восстановлении потерянных файлов мы будем получать копии с нужным содержанием, но с неверными правами (точнее, все файлы будут иметь права 644).
cppmm 01.10.09 16:18 # +0
В случае "домашних" конфигов - это не проблема Сделать один раз chmod, чтобы убрать чтение для группы и остальных - не проблема. А на серверах для бекапа есть специальные вещи, начиная от tar и заканчивая специально организованными RAID'ами и системами бекапа.
Или предлагается для сохранения .bashrc прикручивать винт в зеркало или настраиваться всякие bacula и т.д.? А не многова-то ли проблем? :)
lwilis 01.10.09 16:44 # +0
В случае "домашних" конфигов - это не проблема
тут совсем недавно exelens спрашивал о безопасности IM-клиентов. Теперь смотрим:
1
2
3
4
5
6
aap@h:~$ find ~ -name "accounts.xml"
/home/aap/.purple/accounts.xml.purple/accounts.xml
aap@h:~$ ls -l $(!!)
ls -l $(find -name "accounts.xml")
-rw------- 1 aap users 16810 2009-10-01 16:16 ./.purple/accounts.xml
 
так что в случае и "домашних" конфигов это проблема.

Или предлагается...
я просто обратил внимание автора на то, что есть сложности применения СКВ для ведения базы конфигов. А решение принимать все-равное ему.
cppmm 01.10.09 21:35 # +0
Я согласен, что с правами при использовании СКВ необходимы лишние телодвижения. Т.е. стянул бекап с svn(в моём случае) и приходится переназначать права. Ну а как иначе? tar -cpjvf? Или какие-нибудь специализированные системы бекапов. Других выходов я лично не вижу. точнее, раньше видел. раньше я просто сохранял все конфиги куда-нибудь меняя имя по типу backup_vimrc, backup_bashrc и т.д. Но это, по-моему, сложнее, чем svn co и chmod go-w. :)
lwilis 01.10.09 21:49 # +0
выходов я лично не вижу
есть IsiSetup и etckeeper.
cppmm 01.10.09 21:59 # +0
1
2
[cppmm@damned ~]$ apt-cache search etckeeper
etckeeper - store /etc in git, mercurial, or bzr

Надстройка над СКВ? :)
Ну а что касается IsiSetup, выглядит неплохо. Но лично мне не подходит.
Спсибо за ссылки, но я пока останусь на svn'е. :)
digiwhite 01.10.09 21:28 # +0
Как вариант, хранить версии не самих конфигов, а "затаренных" архивов, ибо tar сохраняет информацию о правах. Чем не вариант? Т.е, пишем скрипт, который выполняет архивацию всех нужных нам конфигурационных файлов, кладет в репозиторий и коммитит.Суем его в cron, для выполнения, скажем раз в неделю (не особо вариант, конечно, ибо зачем хранить одно и тоже - хотя если изменений нет, то и СКВ а ля меркуриал не заметит изменений) или запускаем ручками перед внесением изменений в конфиги.
Iliander 01.10.09 19:11 # +0
У меня конфиги всех программ вынесены из домашней директории в /etc (для того, чтобы не синхронизировать их постоянно между рутовой записью и своей).
Пытаюсь их добавить:
iliander ~ % hg add /etc/zshrc
abort: /etc/zshrc not under root

Как тут быть?
lwilis 01.10.09 21:17 # +0
Как тут быть?
есть два пути "правильный" и "неправильный". "Правильный" будет оффтопом (гуглить в сторону FHS)

"неправильный" путь завести реп в /etc и рулить репом с правами uid=0
digiwhite 01.10.09 21:23 # +0
Ужос какой. Я имею в виду неправильный путь.
cppmm 01.10.09 21:37 # +1
А как по мне, тут уже заведомо неправильный путь, хранить конфиги пользовательского софта в /etc...
Iliander 01.10.09 21:40 # +0
Я не считаю, что хранить конфиги vim и zsh полностью в /etc слишком уж неправильно. А чисто пользовательский софт я там и не храню, извращение это.
lwilis 01.10.09 21:45 # +1
я об этом же, поэтому и намекнул про FHS
cppmm 01.10.09 22:10 # +0
+1

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 57)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 1200 из 91 города)
            Топ пользователей Топ блогов
            В сети: digiwhite, s2h, Elvis, h31, maxp, iriver550, muhas, d1g

            Новенькие: benial, ksar, Greenperm, Paterson, Lusus
            welinux.ru

            Смотреть онлайн бесплатно

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн