Effacement des doublons et historique complet pour Fim 1.2.2

31
24
oct.
2016
Ligne de commande

Fim (File Integrity Manager) sort dans sa version 1.2.2 avec diverses améliorations et un support de présentation en français.

Fim est un gestionnaire de fichiers libre (licence GPL v3) qui permet de gérer beaucoup de fichiers de n’importe quelle taille. Il peut, par exemple, gérer des musiques, des photos ou des vidéos. Il est capable de gérer des centaines de milliers de fichiers occupant une taille totale de plusieurs téraoctets. Il peut détecter les fichiers dupliqués et les effacer.

Fim Logo

French slides

Les nouveautés depuis la version 1.2.0

Général

  • ajout d'un support de présentation en français et en anglais ;
  • effacement des doublons avec la commande rdup ;
  • amélioration de l’affichage de la commande de détection des doublons ;
  • la commande log affiche le détail de toutes les modifications sur les fichiers ;
  • allocation dynamique de files d’exécution pour « hacher » les fichiers en fonction du débit du disque, ce qui permet plus de files d’exécution dans le cas d’un SSD et moins pour un disque dur classique ; ce mode de fonctionnement est activé par défaut ;
  • la commande diff est dépréciée en faveur de la commande status ;
  • l’option -c est dépréciée en faveur de l’option -m ;
  • la commande rdup utilise maintenant l’option -M.

Corrections de bogues

  • détection correcte en mode « super‐fast » des fichiers qui grossissent ;
  • commentaires avec espaces supportés sous Windows ;
  • diverses corrections, plus de détails dans le journal des modifications.
  • # Intéressant

    Posté par . Évalué à 3.

    La fonctionnalité de détection et effacement des duplicatas m’intéresse tout particulièrement. J’ai quelques répertoires fourre-tout en vrac et des récupération de fichiers non terminées… ça va m’aider.

    Merci

    • [^] # Re: Intéressant

      Posté par . Évalué à 6. Dernière modification le 25/10/16 à 19:58.

      La fonctionnalité de détection et effacement des duplicatas m’intéresse tout particulièrement

      En fait, il y a plein de softs qui font ça, à commencer par fslint (voir le code de findup, en gros c'est un gros pipe :) et fdupes et plein d'autres (N.B. j'utilise git ls-tree -r HEAD | cut -d' ' -f3- | sort | uniq -D -w 40 pour trouver les doublons dans un repo git). Le principe est un peu toujours le même :

      • parcourir le fs (tiens d'ailleurs j'ai découvert qu'il y avait une fonction appelée ftw() qui faisait ça dans la libc)
      • trier les fichiers par taille et ne retenir que les entrées présentes plus d'une fois
      • calculer un hash (éventuellement sur une portion du fichier pour aller plus vite si on accepte le risque de faux-positif)
      • les "doublons" sont les fichiers de même taille et de même hash (on peut aussi prendre en compte la similitude entre basenames, mais en ce qui me concerne j'évite ça compte tenu des soucis entre lower/uppercase sur les fs unix, et des troncature à 8 caractères sur les fs préhistoriques…). Certains programmes se contentent de lister les doublons mais d'autres proposent de remplacer les entrées excédentaires par un hard link si les fichiers sont sur le même fs.

      Par contre, je ne connais pas de programme qui te factorise les sous-arborescences (i.e. qui évitent de lister tous les fichiers et sous-dossiers quand tu as deux dossiers identiques). J'ignore si FIM le fait, mais en tout cas c'est ce manque que j'ai modestement essayé de combler avec un petit script sobrement intitulé Duplicide. Feedbacks welcome :)

    • [^] # Re: Intéressant

      Posté par . Évalué à 2.

      Idem : faire le ménage dans des vieux backups.

      J'ai implémenté un petit outil à base de sha512 et lmdb, avec glu python et shell.
      Ça a l'avantage d'être très économe en mémoire, contrairement à l'implémentation choisie pour FIM à base de collections Java.

      Après mon outil n'était pas aussi riche fonctionnellement.

  • # Lapin compris

    Posté par . Évalué à 9.

    Je n'ai toujours pas compris ce qu'est FIM ni le(s) use-case(s) associé(s). "Gérer" c'est un peu flou.

    Un gestionnaire de fichiers qui gère des tas de fichiers totalisant plusieurs tera-octets, le Tracker de BeOS le faisait très bien il y a 20 ans. "Gérer" des musiques, photos et vidéos itou. Virer les doublons itou.

    Quand je regarde les slides, ça a l'air d'apporter une alternative compliquée (et utilisant Java) aux commandes UNIX standard de gestion de fichiers.

    BeOS le faisait il y a 15 ans !

  • # Effacement des doublons

    Posté par (page perso) . Évalué à 10.

    Ne vaudrait-il pas plutôt remplacer les doublons par des hardlink que les supprimer ?

    Il existe deux catégories de gens : ceux qui divisent les gens en deux catégories et les autres.

    • [^] # Re: Effacement des doublons

      Posté par . Évalué à 3.

      Effectivement cette possibilité ouvrirait d'autres cas d'utilisation intéressants…

    • [^] # Re: Effacement des doublons

      Posté par . Évalué à 5.

      Ah, c'est pas ce qu'il fait ?!?
      Moi, en lisant la dépêche, je me suis naïvement dit qu'il virait les doublons, pour ne garder qu'un seul fichier, et faisait pointer tous les anciens vers celui-ci, pour ne pas modifier les répertoires qui contiennent ledit fichier.

      • [^] # Re: Effacement des doublons

        Posté par . Évalué à 5.

        C'est une très bonne idée pour la prochaine version j'ajouterais une option pour créer des hard link plutôt que d'effacer les fichiers.

        • [^] # Re: Effacement des doublons

          Posté par . Évalué à 2.

          Attention je crois que ça ne fonctionne que sur un même FS…

          • [^] # Re: Effacement des doublons

            Posté par . Évalué à 5.

            C'est même certain.

            Le hard link c'est sur un même système de fichier : le principe c'est que tu as les données du fichier physiquement sur ton système de fichier, et que tu références ces données à partir de plusieurs endroits dans l'arborescence de ce système de fichier.
            Le fichier est réellement à plusieurs endroits à la fois dans l'arborescence, mais les données sont les mêmes, modifier le fichier à un endroit le modifie partout.

            On comprend bien que ça ne peut pas sauter d'un système de fichier à un autre.

            Yth.

        • [^] # Re: Effacement des doublons

          Posté par . Évalué à 3.

          propose aussi les softlink, les hardlink posent certain problème.

          "La première sécurité est la liberté"

          • [^] # Re: Effacement des doublons

            Posté par . Évalué à 4. Dernière modification le 26/10/16 à 17:16.

            les hardlink posent certain problème

            Les symlinks aussi : tes deux (ou plus) copies de fichiers ne sont plus toutes "égales", donc si tu effaces le fichier "de référence" tes autres "copies" deviennent des liens cassés et les données sont perdues. Avec des hardlinks la donnée reste là tant que le compteur de références est > 0. Bref remplacer les copies par des symlinks ne doit être fait que lorsqu'on sait très précisément ce qu'on fait (par exemple, c'est OK si on a une arborescence propre "de référence" et d'autres arborescences "à trier" où il est OK de remplacer les doublons par des symlinks). Par ailleurs, si tu déplaces le fichier de référence (ou si tu déplaces les symlinks qui auraient un path relatif e.g. avec du "../../something") tu te retrouves aussi avec un lien cassé. Idem si tu fais un chroot(). Bref, pour cet usage je trouve que les symlinks sont une approche un peu casse-gueule…

            • [^] # Re: Effacement des doublons

              Posté par . Évalué à 2.

              Tu as le problème en cas d'écriture sur une copie, tu les modifies toutes.

              Je crois que certain recherche à réaliser ce genre de factorisation dans le système de fichier. Il ferait mieux de créer un nouveau type de lien, cela irait plus vite (en gros, le fichier fait un copy-on-write à l'écriture).

              "La première sécurité est la liberté"

              • [^] # Re: Effacement des doublons

                Posté par (page perso) . Évalué à 2.

                Pour les systèmes de fichiers avec COW, cela revient à mutualiser des extents de plusieurs fichiers. Des outils comme duperemove (très bon logiciel) ou bedup (que je n’ai pas testé) le font pour BTRFS.

              • [^] # Re: Effacement des doublons

                Posté par (page perso) . Évalué à 2.

                créer un nouveau type de lien

                alias lnnew='cp --reflink'

              • [^] # Re: Effacement des doublons

                Posté par . Évalué à 3.

                Il ferait mieux de créer un nouveau type de lien, cela irait plus vite (en gros, le fichier fait un copy-on-write à l'écriture).

                Les FS qui cherchent à faire ça ne le font pas forcément au niveau d'un fichier entier.

                Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

              • [^] # Re: Effacement des doublons

                Posté par . Évalué à 3.

                Tu as le problème en cas d'écriture sur une copie, tu les modifies toutes. (…) Il ferait mieux de créer un nouveau type de lien

                Est-ce un problème ou est-ce le comportement souhaité ? Je pense que ça dépend des cas d'usage (dans mon cas, je ne souhaite surtout pas de COW…)

                • [^] # Re: Effacement des doublons

                  Posté par . Évalué à 2.

                  Dans ton cas, tu peux utilisez un softlink ou un hard.

                  Mais en général, tu veux sauver de la place : photos dupliqués : COW ou pas, logiquement tu ne les modifies pas. Mais en cas d'erreur d'effacement ou d'écrasement, avec le COW tu as encore ta photo.

                  Idem avec un bout de code, tu peux le modifier sans en modifier la source d'origine avec le COW.

                  "La première sécurité est la liberté"

  • # FSLINT

    Posté par . Évalué à 2.

    Pour effectuer cette opération et beaucoup d'autres, j'utilise FSlint.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.