Comparaison et élimination des doublon [shell] - Shell/Batch - Programmation
Marsh Posté le 26-12-2006 à 19:54:45
Citation :
* Les demandes du style "vous pouvez faire un programme faisant [...] pour moi ?" sont assez mal vues et n'obtiennent que très rarement de réponses.
* Du moins, s'il s'agit d'une demande de solution toute faite, sans effort manifeste du côté du demandeur. Cette décision a été prise étant donné le nombre croissant de ce type de demandes lors des périodes de reprise des cours ou d'approche des périodes d'examens. |
Marsh Posté le 26-12-2006 à 19:51:51
1.Objectifs
Mettre en place une application de gestion de fichiers et de versions simplifiée. Elle servira notamment à :
*
comparer des contenus de répertoire et sous-répertoires ;
*
maintenir une cohérence entre 2 répertoires ;
*
procurer une interface utilisateur « agréable ».
Cette application compare des fichiers par nom, taille, date ou MD5 (1). Elle propose une interface à l'utilisateur pour la comparaison et la gestion d'une arborescence. Elle utilise des fichiers html pour la sauvegarde d'informations sur son exécution. Pour une cohérence des fichiers dans une arborescence, on élimine les doublons (fichiers strictement identiques). On souhaite également traiter le cas des fichiers de même nom, mais de version différentes (taille et/ou date et/ou hashage différent), cela amène à grouper des fichiers dans un répertoire commun, à les renommer pour prendre en compte ces versions.
2.Fonctionnement
1.
contraintes techniques
*
utilise l'interpréteur bash (mettre #!/bin/bash sur toutes les 1ères lignes de vos scripts) ;
*
doit fonctionner sur pluton (serveur de l'Iut, adresse IP : 147.194.176.19, accès en SSH) sans modifications (attention, mon répertoire de test sera différent du votre, soyez le plus flexible possible) ;
2.
fonctions
recherche et classement de doublons dans une arborescence
Lorsque l'utilisateur lance cette commande, on lui propose :
1.
la recherche et la suppression de doublons dans une arborescence ;
2.
la comparaison et l'équilibrage de 2 arborescences ;
3.
la recherche et la suppression de répertoires vide dans une arborescence;
4.
l'affichage du fichier html de suivi de l'application.
Selon ses choix, s'il choisit :
1.
la recherche et la suppression de doublons dans une arborescence
*
on lui demande le répertoire de départ des recherches ;
*
on parcourt l'ensemble des fichiers et répertoires à partir de ce point ;
*
pour savoir si 2 fichiers sont strictement identiques, on teste leurs hashages MD5 ;
*
à la fin du parcours :
o
on propose à l'utilisateur les paquets de fichiers strictement identiques pour qu'il n'en garde qu'un parmi les n trouvés (ou tous). Il a donc une liste avec des numéros et entre le numéro de celui qu'il garde.
o
on lui propose ensuite le traitement des fichiers qui ont le même nom, des MD5 ou des dates différents. Pour ces fichiers, il faut gérer les versions. On doit donc les trier par date (s'ils ont des dates identiques, on regardera l'heure si elles sont identiques, on en met un en « principal » de manière arbitraire -taille plus grande par exemple). Il faut également les ranger dans un seul répertoire. On lui propose donc la liste de tous les fichiers dans ce cas (par paquet de même nom). Il choisit le répertoire parmi ceux qui contiennent au moins un de ces fichiers. On déplace ensuite tous les fichiers dans ce répertoire, on les classe par date en ajoutant une extension du type : « _autoversion_1_date_heure_ » dans le nom du fichier (attention à conserver l'extension originale du fichier : .txt, .doc, .sh, .mpeg4, ...). Le fichier « principal » (fichier le moins agé) est inchangé. On pourra donc trouver dans un répertoire des fichiers du type :
rapport.doc
rapport3.doc
rapport_autoversion_1_20.11.2006_22:00:21
rapport_autoversion_2_13.11.2006_22:00:21
Attention, il faut conserver la cohérence des fichiers « autoversion », donc tester leur existence avant d'en rajouter et mettre à jour les numéros de versions si besoin.
*
options (hors notation) : proposer un mode automatique (sans intervention d'un utilisateur), qui ne garde qu'un fichier dans une série identique et qui met les numéros de versions dans le 1er répertoire trouvé pour les fichiers de même noms.
2.
la comparaison et l'équilibrage de 2 arborescences
De fonctionnement identique au précédent, cette commande compare les fichiers de 2 arborescences. Elle propose la suppression de doublons MD5 (liste) et le regroupement de versions (liste pour les répertoires, « autoversion »).
3.
la recherche et la suppression de répertoires vide dans une arborescence
Les déplacements et suppressions de fichiers peut amener certains répertoires à être vide, proposer une liste de ces répertoires.
4.
l'affichage du fichier html de suivi de l'application
On propose à l'utilisateur un fichier html qui regroupe toutes les infos d'exécution du script (répertoires parcourus, temps de traitement, choix dans les menus, actions, ...) avec les liens sur les répertoires en question. Remplir ce fichier au fur et à mesure (ranger par date).
Il vous faudra, pour accélérer les traitements, conserver les MD5, les tailles et les dates des fichiers de votre arborescence.
3.Notation
Le projet doit être livré en état de fonctionner sans modifications. Chaque point de 2) est important pour avoir la note maximale, des ajouts non demandés ne seront évalués que si l'application fonctionne pour tous ces points. Toutes les sources devront être commentées (fonctionnement global, détail des fonctions, remarques, ...). Une en-tête doit être présente dans chaque fichier, du type :
#Iut de Provence, dept. Informatique
#projet de script : cohérence d'arborescence
#date, noms et prénoms
#dates et versions, modifications
Idem pour les sources des fichiers html et leur affichage.