Я отредактировал вышеупомянутый сценарий, чтобы также включать простые файлы.
возможно, кто-то должен добавить возможность настроить эту внешнюю сторону сценарий (в конфигурации 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"
Я не думаю, что etckeeper сделает это, но существует несколько решений:
инвертируйте ссылки: произведите ссылку на файловую систему в файл в/etc/
напишите сценарий копирования тех файлов в / и т.д. (резервное копирование) и из / и т.д. (восстановление). Затем используйте те сценарии периодически или в соответствующем рычаге мерзавца.
grub.conf
или иначе Вы не сможете загрузиться.
– Zoredache
11 December 2010 в 01:05
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
.
etckeeper теперь имеет параметр -d
, чтобы указать, в каком каталоге он должен работать.
В то время как ловушки для запуска etckeeper обычно используют конструкцию как etckeeper pre- install
, ..., вам придется вместо этого добавить хуки, которые используют etckeeper pre-install -d / boot / grub
. Это позволит избежать дублирования файлов в вашем подходе.
Обратите внимание, что если вы считаете, что systemd target, service, ..., файлы являются файлами конфигурации (я считаю - в конце концов, файлы в папке / lib / systemd
не сильно отличаются от файлов в /etc/init.d
), то этот параметр -d
поможет вам отслеживать, что происходит в / lib / systemd
.
Из синопсиса: 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, он просто удаляет все локальное репо.