h0rr0rr_drag0n — Резервное копирование конфигурационных файлов.
Не так давно, в результате нелепой ошибки, я чуть было не потерял свой .vimrc, который я пишу чуть ли не с 11 класса. Высрав огромное количество кирпичей Переволновавшись, я решил наконец-то запихать все свои конфиги в какую-нибудь систему контроля версий, чтобы обезопасить себя от дальнейших возможных ошибок.
Я использую систему контроля версий, а не обхожусь банальным копированием всех конфигов, потому что возможна ситуация, когда я сделаю неправильное изменение в конфиге, а потом и вовсе потеряю этот конфиг. Тогда восстановленный конфигурационный файл будет содержать ранее внесенную в него ошибку. Система контроля версий позволяет не попасться в эту ловушку, предоставляя возможность восстановить файл, каким он был до внесения ошибочного изменения.
На канале [email protected] мне посоветовали использовать mercurial – она выгодно отличается своим быстродействием от остальных систем контроля версий.
Сохранять конфиги я решил на своем шелл-аккаунте – ненадежно хранить все это локально – диск может сдохнуть, его могут украсть и т.п. Вероятность возникновения подобного события у хостера – минимальна.
Для начала создадим общий для всех репозиториев каталог, а затем создадим в соответствующем подкаталоге нужный нам репозиторий. Выполним на удаленном хосте:
На локальной машине, с которой будем сохранять конфиги:
Теперь для проверки работоспособности синхронизируем репозиторий с локальной машиной (репозиторий будет создан в новом каталоге – hg наотрез отказывается создавать репозиторий в ~):
Теперь добавим в репозиторий какой нибудь файл.
Все. Добавим таким образом все необходимые конфиги в наш репозиторий.
Если мы обновили какой-нибудь файл, то его нужно вначале закоммитить, а потом отослать изменения на сервер:
Для получения свежей версии файлов из репозитория, выполним в каталоге, который мы ранее синхронизировали с репозиторием:
Просмотреть список измененных файлов можно при помощи следующей команды:
Она выведет список файлов и однобуквенный статус каждого файла в репозитории:
Под все это хозяйство я добавил себе парочку алиасов:
Я использую систему контроля версий, а не обхожусь банальным копированием всех конфигов, потому что возможна ситуация, когда я сделаю неправильное изменение в конфиге, а потом и вовсе потеряю этот конфиг. Тогда восстановленный конфигурационный файл будет содержать ранее внесенную в него ошибку. Система контроля версий позволяет не попасться в эту ловушку, предоставляя возможность восстановить файл, каким он был до внесения ошибочного изменения.
На канале [email protected] мне посоветовали использовать mercurial – она выгодно отличается своим быстродействием от остальных систем контроля версий.
Сохранять конфиги я решил на своем шелл-аккаунте – ненадежно хранить все это локально – диск может сдохнуть, его могут украсть и т.п. Вероятность возникновения подобного события у хостера – минимальна.
Для начала создадим общий для всех репозиториев каталог, а затем создадим в соответствующем подкаталоге нужный нам репозиторий. Выполним на удаленном хосте:
cd
mkdir hg
mkdir hg/configs
chmod -R 700 hg
mkdir hg
mkdir hg/configs
chmod -R 700 hg
На локальной машине, с которой будем сохранять конфиги:
hg init ssh://[email protected]/hg/configs
Теперь для проверки работоспособности синхронизируем репозиторий с локальной машиной (репозиторий будет создан в новом каталоге – hg наотрез отказывается создавать репозиторий в ~):
Теперь добавим в репозиторий какой нибудь файл.
~$ 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 '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 push
Для получения свежей версии файлов из репозитория, выполним в каталоге, который мы ранее синхронизировали с репозиторием:
hg pull
Просмотреть список измененных файлов можно при помощи следующей команды:
hg status -A | grep '^[^?]' | less
Она выведет список файлов и однобуквенный статус каждого файла в репозитории:
- M – файл был изменен
- A - файл был добавлен
- R – файл был удален
- ! – файл был удален, но продолжает числиться в системе контроля версий
- C – изменения в файле отсутствуют
- I - файл игнорируется системой контроля версий
Под все это хозяйство я добавил себе парочку алиасов:
1 2 3 4 5 6 7 8 9 |
|
По материалам блога Дракон-линуксоид