Назад | Перейти на главную страницу

Как я могу различать два сервера Redhat Linux?

У меня есть два сервера, которые должны иметь одинаковую настройку, за исключением известных различий.

Запустив:

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt

Я могу найти список всех файлов на одном сервере и сравнить его со списком файлов на другом сервере. Это покажет мне различия в именах файлов, находящихся на серверах.

Что я действительно хочу сделать, так это запустить контрольную сумму для всех файлов на обоих серверах и сравнить их, чтобы также определить, где содержимое отличается. например

find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum

Это разумный способ сделать это? Я думал, что rysnc уже имеет большую часть этой функциональности, но можно ли ее использовать для предоставления списка различий?

Вы правы, rsync для этого идеально подходит. Использовать --itemize-changes (он же -i). Убедитесь, что вы можете запустить это как root с обеих сторон (или какому-нибудь другому пользователю с полным доступом к машине):

rsync -ani --delete / root@remotehost:/
  • -a предназначен для архива и в основном заставляет rsync делать точную копию (за исключением некоторых случаев, связанных со ссылками)
  • -n предназначен для пробного прогона и означает, что фактически ничего не изменится (это ВАЖНО! :))
  • -i предназначен для изменения элементов и выводит простой для понимания формат, показывающий каждый файл, который необходимо обновить (синтаксис полностью объяснен на странице руководства под подробной справкой для этого триггера).
  • --delete заставляет rsync удалять файлы, которые существуют в месте назначения, но не в источнике.

Если вы хотите исключить определенные пути, используйте такие команды, как --exclude /var. Шаблоны исключения относятся к исходному каталогу (которым в данном случае является /, поэтому они фактически абсолютны).

Вы можете изучить флаг rsync -a. Из man rsync:

    -c, --checksum              skip based on checksum, not mod-time & size

Я бы оставил комментарий к ответу Алекса Юркевича, но у меня недостаточно репутации: '(пока ...

Вам следует рассмотреть один полезный инструмент - "rpm -Va". Это распечатает список всех в упаковке файлы, которые отличаются от того, когда они были упакованы. Это игнорирует любые неупакованные файлы, но это очень хороший способ получить представление о файлах, которые были изменены с момента установки, которые являются частью базовой системы. Они также включают флаг, который сообщает вам, считаются ли они файлами конфигурации.

Например:

S.5....T  c /root/.bashrc
S.5....T  c /etc/yum/yum-updatesd.conf
.M......    /usr/bin/rdate
..5....T  c /etc/dbbackup.conf
S.5....T  c /etc/webalizer.conf
SM5....T  c /etc/sysconfig/iptables-config

Итак, ".bashrc" и "yum-updatesd.conf" - это "конфигурационные" файлы, которые изменились по размеру, времени и контрольной сумме MD5. "rdate" изменил режим ...

База данных RPM - это очень полезная вещь.