W szczególności chciałbym śledzić moje grub.conf
( /boot/grub/grub.conf
) i niektóre pliki Oracle (tj /db/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
.).
Próbowałem użyć linków; jednak etckeeper / git śledzi tylko tam, gdzie prowadzi link, a nie faktyczną zawartość. Nie mogę utworzyć twardych linków, ponieważ pliki znajdują się na innym woluminie.
Wiem, że mógłbym skonfigurować inne repozytorium GIT, ale wolałbym, żeby to wszystko było w etckeeper.
Aktualizacja
Na podstawie odpowiedzi nealmcb opracowałem następujący skrypt:
#!/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"
Aby dodać lub usunąć ścieżkę, wystarczy dodać lub usunąć mirror_dir
połączenie u dołu.
Odpowiedzi:
Edytowałem powyższy skrypt, aby uwzględnić również zwykłe pliki.
może ktoś powinien dodać możliwość skonfigurowania tego poza skryptem (w konfiguracji etckeeper?) i wysłać to jako łatkę, aby dołączyć do hess?
źródło
etckeeper pozwala na integrację z innymi systemami.
Chciałem również śledzić zmiany dokonane przez update-grub w / boot, więc umieściłem poniższy kod
/etc/etckeeper/commit.d/20mirror-outside-files
W ten sposób za każdym razem, gdy etckeeper jest wywoływany z innych powodów (kiedy instaluję oprogramowanie, czasami co noc itp.), Pobiera i śledzi zmiany w najnowszej konfiguracji grub.
Wymyśliłem konwencję, aby umieścić te rzeczy w pliku / etc / Mirror / path-to-outside-file , np.
/etc/Mirror/boot/grub/grub.cfg
Ale jeśli ktoś ma precedens w innej takiej konwencji, chciałbym o tym usłyszeć.Aktualizacja:
Zauważ, że z jakiegoś powodu etckeeper nie uruchamia tego podczas wykonywania apt-get remove lub purge, np. W celu usunięcia starego jądra. Dziwne .... Ale
sudo etckeeper commit
w takim przypadku możesz uruchomić ręcznie lub po instrukcjiupdate-grub
.źródło
etckeeper ma teraz
-d
opcję wskazania, w którym katalogu musi działać.Podczas gdy haki do uruchomienia etckeepera generalnie używają konstrukcji jako
etckeeper pre-install
, ... musiszetckeeper pre-install -d /boot/grub
zamiast tego dodać haki . Pozwoli to uniknąć powielania plików w twoim podejściu.Zauważ, że jeśli weźmiesz pod uwagę, że systemowe pliki docelowe, serwisowe, ... to pliki konfiguracyjne (robię - w końcu pliki poniżej
/lib/systemd
nie różnią się tak bardzo od plików poniżej/etc/init.d
), to ta-d
opcja pomoże ci śledzić, co się stanie/lib/systemd
.źródło
Z streszczenia:
etckeeper init -d /directory
Ale strzeż się! przy następnym uruchomieniu lub w przyszłym tygodniu, jeśli zapomnisz
-d path
, może utworzyć nowe niezależne repozytorium lokalne z domyślną lokalizacją w/etc
.Polecam więc wprowadzenie tego ważnego szczegółu do jego konfiguracji w etckeeper.conf. Szybki,
grep /etc \``which etckeeper\``
ujawniaETCKEEPER_DIR=/etc
:, a więc po prostu użyj tej zmiennej w etckeeper.conf.Z chęci „zachowania” innych rzeczy, w tym atrybutów plików,
etckeeper init -d /
działało dla mnie, ale późniejsze zapominanie o szczegółach jest denerwujące. Więc najlepiej zapisać ten szczegół. Ponadtouninit
nie cofa się przy użyciu VCS, po prostu usuwa całe lokalne repozytorium.źródło
Nie sądzę, że etckeeper to zrobi, ale istnieje kilka rozwiązań:
odwróć łącza: umieść łącze w systemie plików do pliku w / etc /
skrypt kopiuje te pliki do / etc (kopia zapasowa) i poza / etc (przywracanie). Następnie używaj tych skryptów okresowo lub w odpowiednim git hook.
źródło
grub.conf
używać linku zwrotnego, bo inaczej nie będziesz w stanie uruchomić systemu.