comparer le contenu de deux répertoires sur un serveur distant en utilisant unix
Je suis nouveau sur unix et ont besoin d'un peu d'aide ici.
J'ai deux répertoires présents sur les deux serveur différent. les deux répertoires contient les mêmes fichiers. Maintenant, je veux vérifier si tous les fichiers sont synchronisés dans les deux répertoires. Si les fichiers ne sont pas synchronisés alors je veux afficher seulement le nom de ces fichiers.
Je suis en mesure de le faire lorsque les répertoires sont sur le même serveur. pas en mesure de comprendre comment faire lorsque les annuaires sont présents sur deux serveurs différents.
eg:
server1 /abc/home/sample1/
server2 /abc/home/sample2/
ici, je veux seulement que le nom des fichiers à afficher lors de l'-il pas dans la synchro.
Merci d'avance
- Monter les deux serveurs sur un système commun et de comparer la façon dont vous faites comme d'habitude.
- ne pouvons-nous pas obtenir ce à l'aide de diff, rsync ou vimdiff
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser rsync avec l'
-n
indicateur pour savoir si les fichiers sont synchronisés, sans vraiment faire une synchronisation.Par exemple, à partir de serveur1:
Cela permettra d'imprimer les noms de tous les fichiers (récursif, avec la
-r
drapeau) qui diffèrent entreserver1:/abc/home/sample1/
etserver2:/abc/home/sample2/
-c
ici est super important, car il compare par somme de contrôle particulier. J'ai été faire de faux positifs sans elle.-a
implique-r
(sauf si vous utilisez--files-from
)rsync -avcn folder1/ folder2/
.-n
est juste un raccourci pour--dry-run
-n
la marche à Sec (ne pas transférer tous les fichiers, super important) --a
mode Archive (conserver les liens symboliques, les autorisations, les horodatages...) --v
Verbose output --r
Récursive --c
la comparaison à l'aide de la somme de contrôle au lieu de timestamp+taille. Ceci est important pour éviter les faux positifs, comme les deux endroits pourraient ne pas avoir de correspondance des horodateurs.Sur serveur1:
C'est assez rapide, mais probablement pas aussi précis que rsync depuis qu'il utilise la taille du fichier au lieu de hachage du contenu. Aussi, le rsync de kielni la réponse ne sera pas montrer quoi que ce soit si server2 a plus de fichiers puis serveur1. Au lieu de cela, essayez ceci:
Dans le scénario de pas de connectivité entre les deux serveurs, l'utilisation de "l'arbre" de commande pour obtenir la structure du répertoire des fichiers et de les diff deux fichiers.
J'ai toujours utiliser
rsync -avcn
pour de telles tâches, - je suis un CLI ventilateur. L'idée est de faire un "dry run" (-n
), qui montre ce qui aurait été fait sans les copier tous les fichiers ou de faire une quelconque modification. À l'aide de la-c
commutateur est vraiment important, car il utilise la somme de contrôle plutôt que la date de modification et la taille du fichier pour déterminer si les fichiers sont différents.-a
permet de s'assurer que la comparaison est plus complet et il force le programme à plonger dans les sous-répertoires. Enfin,-v
augmente le niveau de verbosité, ce qui est utile en cas de différents fichiers sont trouvés.Donc une solution possible va quelque chose comme ceci:
et
rsync
imprime les noms des fichiers qui sont différents entre les deux répertoires. Remarque les barres obliques - ils sont essentiels.Cependant:
rsync -avcn source_dir/dest_dir/> diffs.txt
rsync -avcn /src/My Dir/dest/My dir/
n'est pas ce que vous voulez; vous devez plutôt utiliserrsync -avcn /src/My\ Dir/dest/My\ Dir/
ou peut-êtrersync -avcn /src/"My Dir"/dest/"My Dir"/
. Ce point est d'autant plus valable quand vous travaillez avec Windows montures.