Fichiers et répertoires

  1. Faire un programme en Perl qui admet une série d'arguments, et qui, pour chaque argument argi effectue une liste des fichiers récursivement à partir du chemin d'accès argi. Cette liste ne devra pas afficher le nom des répertoires au milieu des fichiers, et devra indenter les fichiers à chaque fois que l'on descend dans un sous-répertoire.
    [
    corrigé]

  2. Faire un programme fatfilter en Perl qui recherche à partir d'un répertoire donné les gros fichiers auxquels nul n'a accédé récemment. Un fichier de configuration .fatfilterrc contient, pour certaines extensions de nom de fichier, des règles spécifiques : ne pas tenir compte de la date de dernier accès, ne pas tenir compte de la taille du fichier, afin d'affiner la recherche des fichiers qu'il faut comprimer. Voici un exemple de fichier de configuration.
    [corrigé]

  3. L'objet de cet exercice est de construire un logiciel permettant de maintenir identiques deux répertoires sur des disques différents. Par exemple, si l'on travaille indifféremment sur une station fixe en réseau ou sur un portable, il faut répercuter les mises à jour de fichiers d'une machine à l'autre. Ce sera fait sous la forme d'un programme Perl update qui admet une variété d'arguments et d'options.

    Les arguments sont des noms de répertoires qu'il faut mettre à jour. S'il n'y en a pas, on considère l'argument par défaut donné par la variable d'environnement $HOME. Un fichier .updaterc peut préciser si certains répertoires ou fichiers doivent être exclus. Le principe est d'avoir sur chaque machine un fichier .update qui contient le liste des fichiers avec leur date de dernière modification, correspondant à la dernière mise à jour, et leur numéro d'inode. Lorsqu'on quitte une machine, on crée une archive .tgz qui contient les fichiers modifiés.

    • update -h
      Affiche un message d'aide.
    • update -i
      Initialise le fichier .update s'il n'existe pas. Message d'erreur sinon.
    • update -s
      Crée un fichier .update-machine qui contient la liste des fichiers effacés, déplacés, renommés, créés ou modifiés depuis la dernière mise à jour. Lance un éditeur de fichier sur .update-numéro pour permettre à l'utilisateur de faire des modifications. Crée un fichier .update-machine.tgz (une archive comprimée, créée par tar) qui contient tous les fichiers créés ou modifiés, plus le fichier .update-machine. Supprime .update-machine. NB : machine est le nom de la machine.
      La syntaxe suggérée pour le fichier .update-machine est :
      créé ou modifié "fichier"
      supprimé "fichier ->"
      déplacé ou renommé, sans modification "ancien_fichier -> nouveau_fichier"
      déplacé ou renommé, avec modification "ancien_fichier ->"
      "nouveau_fichier"
    • update
      Traite successivement tous les fichiers .update-machine.tgz existant en restituant les modifications de fichiers, et détruit ces fichiers. (On pourra demander à l'utilisateur confirmation des modifications à effectuer au préalable.)
    Comparer avec rdist.