Mam dwa serwery, które powinny mieć taką samą konfigurację, z wyjątkiem znanych różnic.
Biegiem:
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt
Mogę znaleźć listę wszystkich plików na jednym serwerze i porównać ją z listą plików na drugim serwerze. To pokaże mi różnice w nazwach plików znajdujących się na serwerach.
Naprawdę chcę zrobić sumę kontrolną na wszystkich plikach na obu serwerach i porównać je, aby sprawdzić, gdzie zawartość jest inna. na przykład
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum
Czy to rozsądny sposób, aby to zrobić? Myślałem, że rysnc ma już większość tej funkcjonalności, ale czy można go użyć do przedstawienia listy różnic?
-print0
zamiast-print
ixargs -0
zamiastxargs
. Unikniesz problemów spowodowanych przez „nieparzyste” nazwy plików.Odpowiedzi:
Masz rację, rsync jest do tego idealny. Użyj
--itemize-changes
(aka -i). Upewnij się, że możesz uruchomić to jako root po obu stronach (lub jakiś inny użytkownik z pełnym dostępem do komputera):-a
służy do archiwizacji i zasadniczo powoduje, że rsync tworzy dokładną kopię (oprócz niektórych przypadków z linkami)-n
jest na sucho i oznacza, że nic się nie zmieni (ten jest WAŻNY! :))-i
służy do zmiany pozycji i generuje prosty, zrozumiały format, w którym można go znaleźć, pokazując każdy plik, który wymaga aktualizacji (składnia jest wyjaśniona w pełni na stronie podręcznika pod szczegółową pomocą dla tego wyzwalacza).--delete
sprawia, że rsync usuwa pliki istniejące w miejscu docelowym, ale nie w źródle.Jeśli chcesz wykluczyć określone ścieżki, użyj poleceń takich jak
--exclude /var
. Wzorce wykluczania są względne w stosunku do katalogu źródłowego (którym w tym przypadku jest /, więc są w rzeczywistości absolutne).źródło
Możesz sprawdzić flagę rsync -c. Od
man rsync
:Zostawiłbym komentarz do odpowiedzi Alexa Jurkiewicza, ale nie mam wystarczającej liczby przedstawicieli: „(jeszcze ...
źródło
Jednym z przydatnych narzędzi, które należy wziąć pod uwagę, jest „rpm -Va”. Spowoduje to wydrukowanie listy wszystkich spakowanych plików, które różnią się od tego, kiedy zostały spakowane. Ignoruje to wszelkie nie spakowane pliki, ale jest to bardzo dobry sposób, aby uzyskać wyobrażenie o plikach, które zostały zmienione od czasu instalacji, które są częścią systemu podstawowego. Zawierają także flagę informującą, czy są uważane za pliki konfiguracyjne.
Na przykład:
Tak więc „.bashrc” i „yum-updatesd.conf” to pliki „konfiguracyjne”, które zmieniły się pod względem wielkości, czasu i sumy kontrolnej MD5. „rdate” zmienił tryb ...
Baza danych RPM jest bardzo przydatną rzeczą.
źródło