Swisslinux.org

− Le carrefour GNU/Linux en Suisse −

 

Langue

 

Le Forum

Vous n'êtes pas identifié.

#1 19 Jan 2005 10:34:25

[GO]Skywalker13
Modérateur
Lieu: Choëx (VS)
Date d'inscription: 05 Oct 2004
Messages: 896
Site web

[Commande] Comparer deux dossier récursivement (Info)

Hello,
Je cherche à comparer le contenu de deux dossiers récursivement, mais je ne trouve pas de commande pour le faire.
Vous avez une idée?

Merci !


Mathieu SCHROETER
log.schroetersa.ch

Hors ligne

 

#2 19 Jan 2005 11:57:46

Muad'dib
Gourou(e) du libre
 
Lieu: Sion
Date d'inscription: 11 Oct 2004
Messages: 340

Re: [Commande] Comparer deux dossier récursivement (Info)

peux être que

Code:

ls -R rep1 > fichier1 | ls -R rep2 > fichier2 | diff fichier1 fichier2

ou rep1 et rep2 sont les nom des repertoires.

Un peu brut lw résultat en sortie...


"heureux celui qui partage"
--------------------------------------

Hors ligne

 

#3 19 Jan 2005 12:23:23

[GO]Skywalker13
Modérateur
Lieu: Choëx (VS)
Date d'inscription: 05 Oct 2004
Messages: 896
Site web

Re: [Commande] Comparer deux dossier récursivement (Info)

Ca peut être une solution... Effectivement.. merci

Mais vu qu'il y a dans les 100'000 à 150'000 fichiers dans le répertoire ça va être extrêmement lourd ... je pensais donc a rsync, mais je ne vois pas comment lui passer les paramètres pour n'avoir que un rapport entre les répertoire.


Mathieu SCHROETER
log.schroetersa.ch

Hors ligne

 

#4 19 Jan 2005 12:27:46

WaVeR
Gourou(e) du libre
Lieu: Biel-Bienne
Date d'inscription: 08 Oct 2004
Messages: 531
Site web

Re: [Commande] Comparer deux dossier récursivement (Info)

Il me semble qu'avec diff c'est faisable même pour les répertoires. essaye de voir le man "peut-etre diff -r rep1 rep2"


There's no place like 127.0.0.1

Hors ligne

 

#5 19 Jan 2005 12:29:13

Swebian
Invité
 

Re: [Commande] Comparer deux dossier récursivement (Info)

Je bouges dans /Console car ça concerne des commandes shells.

 

#6 19 Jan 2005 13:07:36

Muad'dib
Gourou(e) du libre
 
Lieu: Sion
Date d'inscription: 11 Oct 2004
Messages: 340

Re: [Commande] Comparer deux dossier récursivement (Info)

je pensais donc a rsync,

Pourquoi rsync? Tu veux arriver à quel résultat exactement? Tu veux syncroniser 2 repertoires distants?? Si c'est ce que tu veux faire, je te conseil (entre autres solutions) l'utilitaire unison que tu trouveras facilement sur sourceforge.

quant au diff -r rep1 rep2 effectivement c'est une meilleure solution moins lourde...     ahhh l'art de se compliquer la vie   big_smile


"heureux celui qui partage"
--------------------------------------

Hors ligne

 

#7 19 Jan 2005 13:51:11

asteroid
Humain(e) libre
 
Lieu: Sud france - Nîmes (30)
Date d'inscription: 30 Dec 2004
Messages: 44
Site web

Re: [Commande] Comparer deux dossier récursivement (Info)

vu dans le man diff

> Si les deux fichiers source et cible sont des répertoires,
       diff  compare  les  fichiers  correspondant  dans les deux
       répertoires, dans l'ordre alphabétique. Cette  comparaison
       n'est  pas  récursive,  à  moins d'employer l'option -r ou
       --recursive.  diff ne compare jamais le  contenu  ``réel''
       d'un répertoire en le considérant comme un fichier.

Mais exactement, que veux tu faire :
-comparer les répertoires ?
-comparer le contenu des fichiers situés dans les répertoires ?



Edit : Correction de la syntaxe des balises de quote.


Free Your mind, Free Your Engine ... Get a Slackware !!

Hors ligne

 

#8 19 Jan 2005 22:46:33

[GO]Skywalker13
Modérateur
Lieu: Choëx (VS)
Date d'inscription: 05 Oct 2004
Messages: 896
Site web

Re: [Commande] Comparer deux dossier récursivement (Info)

Resortir les fichiers qui n'ont pas la même taille, ceux qui ont disparut, les nouveaux, mais sans se baser sur la date de derniere modif, car bon nombre d'entre eux l'ont perdu lors de divers copies.
(pour être plus précis, si deux fichiers ont la meme taille mais diffère en contenu je les veux en évidence et si deux fichiers ont le meme contenu mais pas la meme date de derniere modif je veux passer par dessus)


Et j'utilise rsync pour faire mes backups. Sauf celui que je veux comparer qui n'a pas été synchronisé correctement.


Et aussi une chose, j'ai l'impression de perdre des fichiers quand je lis les rapports :

Number of files: 261806
Number of files transferred: 247780
Total file size: 36760128959 bytes
Total transferred file size: 36760128959 bytes
Literal data: 36760128959 bytes
Matched data: 0 bytes
File list size: 4442765
Total bytes sent: 36779720560
Total bytes received: 4955620

Mais si je fais calculer le nombre de fichier existant dans le backup, j'ai exactement le même nombre de fichier que ce qui est indiqué dans le transfert... je ne comprend pas comment il calcul 261806 fichiers (le dossier de dest était encore vide)..
J'éspère qu'avec ces histoires je ne perd rien.. il semblerait que non, mais voila :-s


PS : je jetterais un oeil à unison


Mathieu SCHROETER
log.schroetersa.ch

Hors ligne

 

#9 27 Feb 2005 13:25:10

becket
Affranchi(e)
 
Date d'inscription: 27 Feb 2005
Messages: 5
Site web

Re: [Commande] Comparer deux dossier récursivement (Info)

Un petit shell rapide du genre de celui qui suit devrait t'aider

Code:

#!/bin/sh

IFS=$'n'

dir_1=/tmp/
dir_2=/tmp2/

for file in $( find $dir_1 $dir_2 -type f  |sort |uniq |sed -e s:^$dir_1:'':g -e s:^$dir_2:'':g )
do
   if  [ ! -e $dir_2/$file ] || [ ! -e $dir_1/$file ]
   then echo  "le fichier $file n'exite pas dans un des deux répertoires" 
        else
                if [ $( md5sum $dir_1/$file | awk '{ print $1 }'  ) != $( md5sum $dir_2/$file | awk '{ print $1 }' ) ]
                then echo pas les meme 
                fi
  fi
done

Tu peux facilement améliorer le script en remplacant $dir_1 et $dir_2 par $1 et $2 ( arguements du script )

Hors ligne

 

Pied de page des forums

Powered by FluxBB