[shell] Comparaison et élimination des doublon

Comparaison et élimination des doublon [shell] - Shell/Batch - Programmation

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.

Reply

Marsh Posté le 26-12-2006 à 19:51:51   

Reply

Marsh Posté le 26-12-2006 à 19:54:45    

Citation :


[0C] On ne fait pas le boulot à votre place.

 

   * 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.
    * Les offres d'emploi et recrutements (même non rémunérés) ont plutôt leur place sur Emploi & Études.

 


[0D] De la même manière, les demandes de résolutions d'exercices ne seront pas acceptées

 

   * 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.
    * Merci aux membres du forum de ne pas donner des résolutions d'exercice lorsqu'il est clair que le demandeur n'a rien fait de son côté ;)


[:natas]


Message édité par 0x90 le 26-12-2006 à 19:55:10

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed