Идея etckeeper очень проста. Все конфигурационные файлы, размещаемые в директории /etc помещаются в систему контроля версий. Таким образом, вы всегда можете "вспомнить" какие изменения и когда вы вносили в конфигурацию и в случае проблем сможете одной командой откатиться к предыдущей версии файлов.
Сперва установите etckeeper:
sudo apt-get install etckeeper
По умолчанию etckeeper использует систему контроля версий Bazaar. Многим кажется более удобным использовать git. Для этого необходимо внести небольшие изменения: установите git и переключите в конфигурационном файле /etc/etckeeper/etckeeper.conf переменную VCS со значения «bzr» на значение «git». Поддерживается большое число и других систем: Mercurial, Darcs и т.п. Учтите, что если вы поменяли значение переменной VCS, то вам придется провести первичную инициализацию:
etckeeper init
Теперь любое изменение файлов в директории /etc не останется незамеченным. В любой момент мы можем поинтересоваться кто, когда, какие файлы редактировал и какие изменения вносил:
sudo etckeeper vcs diff -c2 [sudo] password for linuxari: === modified file '.etckeeper' --- .etckeeper 2012-06-02 10:03:22 +0000 +++ .etckeeper 2012-06-02 10:08:53 +0000 @@ -1987,6 +1987,7 @@ maybe chmod 0755 './systemd/system/multi-user.target.wants' maybe chmod 0755 './terminfo' maybe chmod 0644 './terminfo/README' +maybe chmod 0644 './test' maybe chmod 0755 './texmf' maybe chmod 0755 './texmf/dvipdfm' maybe chmod 0755 './texmf/dvipdfm/config' === added file 'test'
Как видим, был модифицирован файл /etc/.etckeeper и был создан новый файл /etc/test. Если нас устраивают изменения, то мы можем дать команду принять их:
$ etckeeper commit "test" Committing to: /etc/ modified .etckeeper added test Committed revision 2.
После этого все изменения сохранятся как новая версия и мы всегда сможем к ней вернуться, как и к любой другой, предыдущей или последующей.
Таким образом, etckeeper выполняет две важнейшие задачи, которые стоят перед любым ответственным администратором. Во-первых, мы видим все изменения в конфигурации. Любые несанкционированные попытки вмешаться в работу системы будут сразу обнаружены. Этим мы лишаем зловредные программы возможности скрывать свое присутствие. Иногда и вполне добропорядочные программы (например, графические утилиты настройки) вносят изменения в конфигурацию и эти изменения в некоторых случаях приводят к конфликтам. Очень сложно потом вручную установить причину этих конфликтов. Во-вторых, в случае потери работоспособности системы из-за некорректных настроек в конфигурационных файлах, мы можем легко восстановить предыдущее состояние.
Дополнительную информацию можно найти на сайте проекта etckeeper.
Использованы примеры с сайта Линуксария.
А почему не весь диск? Такая вещь должна быть частью файловой системы.
Во-первых нет смысла весь контролировать весь диск. Например, зачем нужно создавать версии /var, /dev и т.п.? Во-вторых, системы контроля версий хранят diff-файлы изменений. Получится рекурсия, когда сохраняются версии изменений изменений изменений и т.д. В-третьих, систему контроля версий можно использовать для любых директорий, а не только /etc. Я, например, использовал Subversion для сохранения изменений в коде сайта и для сохранения файлов с электронными картами, когда занимался ГИС. Не знаю как etckeeper, но одну из VCS изучить и уметь применять на практике стоит.
Не, надо что-нибудь такое, что было бы принудительно встроено во все редакторы, чтобы они не забывали историю отмен, и чтобы она сама была не такой плоской.
Перерасход памяти же. Да и плановые бэкапы по крону частично решают проблему.
Отправить комментарий