rsync, par défaut, compare uniquement les métadonnées de fichier.
rsync -n -a -i --delete source/ target/
explication:
-n
ne copiez ni ne supprimez pas <- C'EST IMPORTANT !! 1
-a
comparer toutes les métadonnées du fichier comme l'horodatage et les attributs
-i
imprimer une ligne d'informations par fichier
--delete
signaler également les fichiers qui ne sont pas dans la source
remarque: il est important d'ajouter les noms de répertoire avec une barre oblique. c'est une chose rsync.
si vous souhaitez également voir les lignes imprimées pour les fichiers identiques, fournissez -i
deux fois
rsync -n -a -ii --delete source/ target/
exemple de sortie:
*deleting removedfile (file in target but not in source)
.d..t...... ./ (directory with different timestamp)
>f.st...... modifiedfile (file with different size and timestamp)
>f+++++++++ newfile (file in source but not in target)
.f samefile (file that has same metadata. only with -ii)
rappelez-vous que rsync compare uniquement les métadonnées. cela signifie que si le contenu du fichier a changé mais que les métadonnées sont restées les mêmes, rsync signalera que le fichier est le même. c'est un scénario peu probable. alors soit confiance que lorsque les métadonnées sont identiques, les données sont identiques, soit vous devez comparer les données de fichier bit par bit.
bonus: pour des informations sur les progrès voir ici: Estimer le temps ou le travail restant pour terminer rsync?
source/
ettarget/
sont aussi à la fois très important! (Sans eux, vous comparerez les noms des répertoires source et cible avec les noms des fichiers enfants, de sorte que tous les noms de fichiers différeront.)*deleting
, mais les fichiers, qui ne sont dans la source, ne s'affichaient pas. Les barres obliques sont faciles à oublier accidentellement et vous obtenez alors une sortie plausible mais erronée.Utilisez la
-q
(--brief
option) avecdiff -r
(diff -qr
). De lainfo
page pour GNUdiff
:Cela ne comparera pas ligne par ligne, mais plutôt le fichier dans son ensemble, ce qui accélère considérablement le processeur (ce que vous recherchez).
la source
Voici un script python rapide qui vérifiera que les noms de fichiers, mtimes et tailles de fichiers sont tous les mêmes:
la source
Si vous avez seulement besoin de savoir si les fichiers de deux branches du système de fichiers sont différents (sans regarder à l'intérieur des fichiers), vous pouvez faire quelque chose comme ceci:
HTH
la source
Basé sur le script de Chris Down, ce script est un peu plus "visuel". L'appelant avec deux arguments
folder1
etfolder2
, il parcourt le premier dossier et pour chaque fichier recherche un fichier correspondant dans le deuxième dossier. S'il est trouvé, le chemin relatif est imprimé en vert, s'il a une heure ou une taille modifiée différente, il est imprimé en jaune et s'il n'est pas trouvé, il est imprimé en rouge.Notez que cela ne suffit pas pour décider si les deux dossiers sont identiques, vous devrez l'exécuter dans les deux sens pour vous en assurer. En pratique, si vous voulez simplement savoir si les dossiers sont les mêmes , alors le script de Chris est meilleur. Si vous voulez savoir ce qui manque ou est différent d'un dossier à l'autre , mon script vous le dira.
REMARQUE: vous aurez besoin termcolor installé,
pip install termcolor
.la source
Si vous souhaitez comparer uniquement une structure et quelques informations de base sur les fichiers, vous pouvez essayer quelque chose comme ceci:
Je ne l'ai pas testé, donc toutes les modifications sont les bienvenues :)
la source
<()
a son propre environnement. Édité.