etckeeper может использоваться для отслеживания файлов конфигурации за пределами / и т.д.?

11
задан 20 July 2017 в 18:17
5 ответов

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

возможно, кто-то должен добавить возможность настроить эту внешнюю сторону сценарий (в конфигурации etckeeper?) и отправляют это как патч к joey hess?

#!/bin/sh
set -e

# Based on nealmcb's + ErebusBat's script from http://serverfault.com/questions/211425/

# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.

# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and track them
# proactively, rather than just opportunistically here.

MIRROR_ROOT=/etc/etckeeper.mirror.d
echo "etckeeper: mirroring outside files to $MIRROR_ROOT/:"

mirror_dir() {
   LOCAL_PATH=$1
   echo "  $LOCAL_PATH"
   mkdir -p $MIRROR_ROOT/$LOCAL_PATH
   rsync -a --del $LOCAL_PATH/ $MIRROR_ROOT/$LOCAL_PATH
}

mirror_file() {
   LOCAL_PATH=$1
   DIRPATH=`dirname $LOCAL_PATH | head -n 1`
   echo "  $LOCAL_PATH"
   mkdir -p $MIRROR_ROOT/$DIRPATH
   rsync -a --del $LOCAL_PATH $MIRROR_ROOT/$DIRPATH
}
mirror_file "/var/srv/foo_bar/blog/config.py"
mirror_file "/var/srv/foo_bar_another_host/trac/conf/trac.ini"
mirror_file "/tmp/wildcards/*.jpg"
6
ответ дан 2 December 2019 в 21:52

Я не думаю, что etckeeper сделает это, но существует несколько решений:

  1. инвертируйте ссылки: произведите ссылку на файловую систему в файл в/etc/

  2. напишите сценарий копирования тех файлов в / и т.д. (резервное копирование) и из / и т.д. (восстановление). Затем используйте те сценарии периодически или в соответствующем рычаге мерзавца.

0
ответ дан 2 December 2019 в 21:52
  • 1
    В то время как обратный канал является хорошей идеей, и я использую его в некоторых случаях существуют случаи, где он не будет работать. Конкретно не пробуйте обратный канал за Ваш grub.conf или иначе Вы не сможете загрузиться. –  Zoredache 11 December 2010 в 01:05
  • 2
    @Zoredache - Точно. Однако обратный канал, вероятно, работал бы на мои файлы Oracle. И и метод копии @pjz, вероятно, работал бы на что-либо на начальной загрузке (личинка + ядро conf). Я попробую это на следующей неделе. –  ErebusBat 11 December 2010 в 20:17

etckeeper действительно позволяет Вам интегрировать его с другими системами.

Я также хотел отследить изменения, внесенные личинкой обновления в начальной загрузке/, таким образом, я поместил код ниже в /etc/etckeeper/commit.d/20mirror-outside-files

Таким образом, любое время etckeeper называют по другим причинам (когда я установлю программное обеспечение, иногда ночью, и т.д.), оно захватит и отследит изменения в последней конфигурации личинки.

Я изобрел конвенцию поместить этот материал под/etc/Mirror/path-to-outside-file, например. /etc/Mirror/boot/grub/grub.cfg но если у кого-либо есть прецедент для другой такой конвенции, я хотел бы услышать об этом.

#!/bin/sh
set -e

# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.

# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and track them
# proactively, rather than just opportunistically here.

echo etckeeper: mirroring outside files

mkdir -p /etc/Mirror/boot/grub
cp -p /boot/grub/grub.cfg /etc/Mirror/boot/grub

Обновление:

Обратите внимание, что по некоторым причинам etckeeper не выполняет это, когда Вы делаете Кв. - добирается, удаляют или производят чистку, например, удалить старое ядро. Нечетный.... Но можно работать sudo etckeeper commit вручную в этом случае, или после руководства update-grub.

3
ответ дан 2 December 2019 в 21:52

etckeeper теперь имеет параметр -d , чтобы указать, в каком каталоге он должен работать.

В то время как ловушки для запуска etckeeper обычно используют конструкцию как etckeeper pre- install , ..., вам придется вместо этого добавить хуки, которые используют etckeeper pre-install -d / boot / grub . Это позволит избежать дублирования файлов в вашем подходе.

Обратите внимание, что если вы считаете, что systemd target, service, ..., файлы являются файлами конфигурации (я считаю - в конце концов, файлы в папке / lib / systemd не сильно отличаются от файлов в /etc/init.d ), то этот параметр -d поможет вам отслеживать, что происходит в / lib / systemd .

3
ответ дан 2 December 2019 в 21:52

Из синопсиса: etckeeper init -d / directory

Но будьте осторожны! в следующий раз или на следующей неделе, если вы забудете -d путь , он может создать новое автономное локальное репо с расположением по умолчанию в / etc .

Так что я бы рекомендовал внести эту важную деталь в конфигурацию, в etckeeper.conf. Быстрый, grep / etc \ `` which etckeeper \ `` , показывает: ETCKEEPER_DIR = / etc , поэтому просто используйте эту переменную в etckeeper.conf.

sed -i '1 i\ETCKEEPER_DIR=/' /etc/etckeeper/etckeeper.conf

Из желания «сохранить» другие вещи, включая атрибуты файлов, etckeeper init -d / у меня сработало, но потом я забыл о деталях. Так что лучше сохранить эту деталь. Кроме того, uninit не отменяет с помощью VCS, он просто удаляет все локальное репо.

1
ответ дан 2 December 2019 в 21:52

Теги

Похожие вопросы