Especificamente eu gostaria de acompanhar meus grub.conf
( /boot/grub/grub.conf
) e alguns arquivos Oracle (ie /db/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
).
Eu tentei usar links; no entanto, o etckeeper / git rastreia apenas para onde o link aponta, não o conteúdo real. E não consigo criar links físicos, pois os arquivos estão em outro volume.
Eu sei que poderia configurar outro repositório GIT, mas eu preferiria ter tudo isso no etckeeper.
Atualizar
Com base na resposta do nealmcb, vim com o seguinte script:
#!/bin/sh
set -e
# Based on nealmcb's idea/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 $LOCAL_PATH/ $MIRROR_ROOT/$LOCAL_PATH
}
mirror_dir "/boot/grub"
mirror_dir "/root"
Para adicionar ou remover um caminho, basta adicionar ou remover a mirror_dir
chamada na parte inferior.
Respostas:
Editei o script acima para incluir também arquivos simples.
talvez alguém deva adicionar a possibilidade de configurar isso fora de um script (na configuração do etckeeper?) e enviá-lo como um patch para joey hess?
fonte
O etckeeper permite que você o integre a outros sistemas.
Eu também queria acompanhar as alterações feitas pelo update-grub em / boot, então coloquei o código abaixo em
/etc/etckeeper/commit.d/20mirror-outside-files
Dessa forma, a qualquer momento o etckeeper é chamado por outros motivos (quando instalo o software, às vezes à noite, etc), ele captura e rastreia as revisões na última configuração do grub.
Eu inventei a convenção para colocar essas coisas em / etc / Mirror / caminho para o arquivo externo , por exemplo,
/etc/Mirror/boot/grub/grub.cfg
mas se alguém tiver precedentes para outra convenção desse tipo, eu adoraria ouvir sobre isso.Atualizar:
Observe que, por algum motivo, o etckeeper não executa isso quando você faz uma remoção ou remoção do apt-get, por exemplo, para excluir um kernel antigo. Estranho ... Mas você pode executar
sudo etckeeper commit
manualmente nesse caso ou após um manualupdate-grub
.fonte
O etckeeper agora tem uma
-d
opção para indicar em qual diretório ele deve operar.Enquanto os ganchos para acionar o etckeeper geralmente usam construct como
etckeeper pre-install
, ..., você terá que adicionar ganchos que utilizemetckeeper pre-install -d /boot/grub
. Isso deve evitar a duplicação de arquivos em sua abordagem.Observe que, se você considerar que os arquivos de destino, serviço, ..., systemd são arquivos de configuração (eu acho - afinal, os arquivos abaixo
/lib/systemd
não são tão diferentes dos arquivos abaixo/etc/init.d
), essa-d
opção ajudará você a acompanhar o que acontece/lib/systemd
.fonte
Da sinopse:
etckeeper init -d /directory
Mas cuidado! da próxima vez que você executá-lo, ou na próxima semana, se você esquecer
-d path
, ele poderá criar um novo repositório local autônomo com o local padrão em/etc
.Então, eu recomendo confirmar esse detalhe importante em sua configuração, no etckeeper.conf. Um rápido,
grep /etc \``which etckeeper\``
revela:,ETCKEEPER_DIR=/etc
e então apenas use esta variável no etckeeper.conf.Do desejo de "manter" outras coisas, os atributos de arquivo incluídos,
etckeeper init -d /
funcionaram para mim, mas depois esquecer os detalhes é irritante. Então é melhor salvar esse detalhe. Além disso,uninit
não desfaz usando o VCS, apenas exclui todo o repositório local.fonte
Eu não acho que o etckeeper fará isso, mas existem algumas soluções:
inverta os links: coloque um link no sistema de arquivos para um arquivo em / etc /
script a cópia desses arquivos em / etc (backup) e fora de / etc (restore). Em seguida, use esses scripts periodicamente ou em um gancho git apropriado.
fonte
grub.conf
contrário você não poderá inicializar.