Vous n'êtes pas identifié.
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 !
Hors ligne
peux être que
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...
Hors ligne
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.
Hors ligne
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"
Hors ligne
Je bouges dans /Console car ça concerne des commandes shells.
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
Hors ligne
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.
Hors ligne
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
Hors ligne
Un petit shell rapide du genre de celui qui suit devrait t'aider
#!/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