У меня есть два сервера, которые должны иметь одинаковую настройку, за исключением известных различий.
Запустив:
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 уже обладает большей частью этой функциональности, но можно ли ее использовать для предоставления списка отличий?
-print0
вместо-print
иxargs -0
вместоxargs
. Вы избежите проблем, вызванных «нечетными» именами файлов.Ответы:
Вы правы, rsync идеально подходит для этого. Используйте
--itemize-changes
(иначе -i). Убедитесь, что вы можете запускать это как root с обеих сторон (или другого пользователя с полным доступом к машине):-a
предназначен для архива и в основном делает rsync точной копией (за исключением некоторых случаев, связанных со ссылками)-n
предназначен для пробного запуска и означает, что на самом деле ничего не изменится (это ВАЖНО! :))-i
предназначен для itemize-change и выводит простой для понимания формат, когда вам нужно получить его, показывая каждый файл, который необходимо обновить (синтаксис полностью объяснен на странице man в подробной справке по этому триггеру).--delete
заставляет rsync удалять файлы, которые существуют в месте назначения, но не в источнике.Если вы хотите исключить определенные пути, используйте такие команды, как
--exclude /var
. Шаблоны исключения относятся к исходному каталогу (в данном случае это /, поэтому они фактически являются абсолютными).источник
Вы можете захотеть изучить флаг -c rsync. От
man rsync
:Я бы оставил комментарий к ответу Алекса Юркевича, но мне не хватает представителя: '(пока ...
источник
Один полезный инструмент, который вы должны рассмотреть, это "rpm -Va". Это распечатает список всех упакованных файлов, которые отличаются от того, когда они были упакованы. Это игнорирует любые неупакованные файлы, но это очень хороший способ понять, какие файлы были изменены с момента установки и являются частью базовой системы. Они также включают флаг, который говорит вам, считаются ли они файлами конфигурации.
Например:
Таким образом, ".bashrc" и "yum-updatesd.conf" являются файлами "конфигурации", которые изменились по размеру, времени и контрольной сумме MD5. "rdate" изменил режим ...
База данных RPM - очень полезная вещь.
источник