Jak śledzić zmiany w / etc /


30

Chciałbym śledzić zmiany w / etc /

Zasadniczo chciałbym wiedzieć, czy plik został zmieniony przez użytkownika yum updatelub przez użytkownika i wycofaj go, jeśli nie podoba mi się ta szansa. Myślałem o użyciu VCS takich jak migawki git, LVM lub btrfs lub program do tworzenia kopii zapasowych.

Co byś polecił?


Odpowiedzi:


32

Wygląda na to, że chcesz etckeepera od Joeya Hessa z Debiana, który zarządza plikami przy /etcużyciu kontroli wersji. Obsługuje git, mercurial, darcs i bazar.

git jest najlepiej obsługiwany przez VCS przez etckeeper, a użytkownicy VCS najprawdopodobniej się dowiedzą. Możliwe, że twoja dystrybucja postanowiła zmodyfikować etckeeper, aby domyślnym VCS nie był git. Powinieneś używać etckeeper z VCS innym niż git, jeśli jesteś zakochany w innym VCS.


Etckeeper jest łatwo jednym z najcenniejszych narzędzi administracyjnych zainstalowanych na moich komputerach i jest jednym z pierwszych pakietów, które instaluję po skonfigurowaniu nowego systemu.
hlovdal

6

Nie mogę dać ci ostatecznej rekomendacji, ale mogę podzielić się kilkoma przemyśleniami na ten temat. Biorąc pod uwagę, że / etc jest zwykle dość mały, możesz po prostu wybrać proste skompresowane rozwiązanie tar-ball. Jeśli nie ma potrzeby przeglądania historii, może to być najłatwiejsze rozwiązanie.

Dla mnie żmudne byłoby zarządzanie woluminami logicznymi, aby śledzić / etc, a zwłaszcza, że ​​nie sądzę, że migawki LVM zostały zaprojektowane do regularnego tworzenia jako środek do tworzenia kopii zapasowych stosunkowo niewielkiej ilości danych.

Wydaje mi się, że btrfs jest o wiele lepszym wyposażeniem, ale wciąż nie jest tak stabilny, jak na przykład ext {2,3,4}, a narzędzie fsck również nie zostało jeszcze wykonane. Ale ciągle się poprawia.

Ja osobiście używam git do śledzenia / etc, ale należy pamiętać, że git nie przechowuje metainformacji plików, takich jak własność lub pozwolenie! Sprawdź także, czy katalog .git ma odpowiednie uprawnienia. Istnieje jednak kilka narzędzi, które pomagają rozwiązać te problemy. Możesz rzucić okiem na etc-Keeper , który został opracowany właśnie do śledzenia / etc lub użyć przynajmniej czegoś takiego jak gitperms lub metastore do śledzenia metainformacji .


3

Aby śledzić „niechciane” zmiany, używamy HIDS - w naszym przypadku samhaininnymi są tripwirelub aide. Wszystkie te systemy będą Cię ostrzegać, gdy wydarzy się coś niechcianego.

A yum updatenie powinien niczego zmieniać bez opuszczania .rpmnew lub .rpmold, jeśli plik konfiguracyjny jest oznaczony jako taki w odpowiednim rpm.

Myselv Uważam, że dobrą praktyką jest wykonanie kopii bezpieczeństwa pliku, który zamierzam zmodyfikować z cp -p origfile origfileYYYY-MM-DDdatą poprzedniego dnia.

Jeśli wszystko inne zawiedzie - dzwonię do osób wykonujących kopie zapasowe i proszę o przywrócenie z ostatniej znanej „dobrej” kopii zapasowej.


1

Myślę, że możesz zrobić migawkę plików / katalogów w /etc.

Najpierw utwórz listę plików / etc / katalogu:

# ls -lha /etc >> /snapshotofetc

A jeśli utworzysz plik w /etc

# touch testfile

a jeśli powtórzysz migawkę /etctego, co zrobiliśmy wcześniej

# ls -lhs /etc /lastsnapshotofetc

a następnie możesz porównać różnice między 2 plikami w następujący sposób:

# diff /snapshotofetc /lastsnapshotofetc


0

Szukasz zarządzania konfiguracją lub śledzenia / monitorowania zmian w systemie plików?

Gdyby było wcześniej, spojrzałbym na puppetlub chef. CFEngineistnieje w celach komercyjnych. puppetjest obecnie popularną bestią.

Jeśli jest to późniejszy, ciężko jest monitorować zmiany w systemie plików, jednak istnieją programy takie jak inotifyi audyt systemu plików auditctllub SGI, famale znowu jest to kwestia monitorowania i może być kosztowną implementacją (wydajność systemu plików może ulec pogorszeniu).


etckeeper może być cichym biegaczem tylko dla określonych rzeczy / etc.
Nikhil Mulley

Przepraszam, że jestem tak nieprecyzyjny. Poprawiłem pytanie.
taffer

0

Możesz sprawdzić, rsnapshotktóre przechowuje cogodzinne migawki dowolnych katalogów, które chcesz ... możesz ustawić 24 godziny, potem X dzienników, a następnie X tygodni, itd. Tyle, ile chcesz miejsca na dysku. Jest wystarczająco sprytny, aby twarde linkować, gdy pliki się nie zmieniają (wykorzystuje się rsyncza kulisami.


0

Możesz rozważyć użycie git. Możesz Skutecznie śledzi zmiany i jest bardzo łatwy w użyciu dla czegoś takiego.

git status # Show changed files
git diff # Show file differences (paged automatically)
git commit -a # Commit all changes. 

Uważam, że początkowa konfiguracja przebiega w ten sposób. Nie robiłem tego przez jakiś czas.

cd /etc
git init
git add *
git commit -a -m "Created repository"

Takie podejście działa najlepiej w przypadku pojedynczego serwera, ale można je nakładać na inne narzędzia, które zmieniają repozytorium. Może to być przydatne w witrynach kanaryjskich, aby zapewnić, że wystąpią oczekiwane zmiany.

Klonowanie może być przydatne do obsługi plików wspólnych dla wielu serwerów.


0

Mam skrypt, który działa codziennie i tworzy kopie zapasowe plików, które zmieniły się od czasu poprzedniej kopii zapasowej:

#!bin/bash
ext=$(date +"%Y%m%d")_ChangeS
mkdir -p "$1/$ext" && \
  ionice -c3 rsync -ah --numeric-ids --inplace --backup \
                   --backup-dir="$1/$ext" \
                   --include="/etc" / "$1" && \
  rmdir --ignore-fail-on-non-empty "$1/$ext"

Przechodzisz ścieżką, w której będą tworzone kopie zapasowe, a ten katalog będzie miał listę podobną do tej (po kilku uruchomieniach):

20120106_ChangeS  etc
$ls 20120106_ChangeS/etc/
cron.d

Możesz go nieco zmodyfikować, aby częściej zapisywać zmiany lub użyć inotify, aby wywołać zmodyfikowaną wersję skryptu, gdy zmiany się pojawią /etc.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.