J'ai deux serveurs qui devraient avoir la même configuration à l'exception des différences connues.
En exécutant:
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | sort > allfiles.txt
Je peux trouver une liste de tous les fichiers sur un serveur et la comparer à la liste des fichiers sur l'autre serveur. Cela me montrera les différences dans les noms des fichiers qui résident sur les serveurs.
Ce que je veux vraiment faire, c'est exécuter une somme de contrôle sur tous les fichiers sur les deux serveurs et les comparer pour trouver également où le contenu est différent. par exemple
find / \( -path /proc -o -path /sys -o -path /dev \) -prune -o -print | xargs /usr/bin/sha1sum
Est-ce une façon sensée de procéder? Je pensais que rysnc possède déjà la plupart de ces fonctionnalités mais peut-il être utilisé pour fournir la liste des différences?
-print0
place de-print
etxargs -0
au lieu dexargs
. Vous éviterez tout problème causé par les noms de fichiers "étranges".Réponses:
Vous avez raison, rsync est parfait pour cela. Utilisez
--itemize-changes
(aka -i). Assurez-vous que vous pouvez l'exécuter en tant que root des deux côtés (ou d'un autre utilisateur avec un accès complet à la machine):-a
est pour l'archive, et fait essentiellement rsync faire un doublon exact (à l'exception de certains cas impliquant des liens)-n
est pour un essai à sec, et signifie que rien ne sera réellement changé (celui-ci est IMPORTANT! :))-i
est pour les changements de détails et génère un format simple à comprendre une fois que vous obtenez-it montrant chaque fichier qui doit être mis à jour (la syntaxe est expliquée en détail dans la page de manuel sous l'aide détaillée de ce déclencheur).--delete
fait rsync supprimer les fichiers qui existent sur la destination mais pas sur la source.Si vous souhaitez exclure certains chemins, utilisez des commandes comme
--exclude /var
. Les motifs d'exclusion sont relatifs au répertoire source (qui dans ce cas est /, ils sont donc effectivement absolus).la source
Vous voudrez peut-être rechercher l'indicateur -c de rsync. De
man rsync
:Je laisserais un commentaire à la réponse d'Alex Jurkiewicz, mais je n'ai pas assez de représentants: '(pourtant ...
la source
Un outil utile que vous devriez considérer est "rpm -Va". Cela affichera une liste de tous les fichiers empaquetés qui diffèrent de quand ils ont été empaquetés. Cela ignore tous les fichiers non packagés, mais c'est un très bon moyen d'avoir une idée des fichiers qui ont été modifiés depuis l'installation, qui font partie du système de base. Ils incluent également un indicateur qui vous indique s'ils sont considérés comme des fichiers de configuration.
Par exemple:
Ainsi, ".bashrc" et "yum-updatesd.conf" sont des fichiers de "configuration" dont la taille, l'heure et la somme de contrôle MD5 ont changé. "rdate" a eu son changement de mode ...
La base de données RPM est une chose très utile.
la source