Journal index2share v0.5.72 “indexer, choisir et copier des fichiers”

Posté par . Licence CC by-sa
Tags :
7
8
avr.
2014

Il s’agit d’un outil en ligne de commande pour Linux et Windows, pour faire de l’échange de fichiers de la main à la main. Il permet de créer et de manipuler des petits fichiers .idx, issue de gros fichiers. L’idée est de manipuler des index de fichiers, au lieu des gros fichiers eux-mêmes, avant de lancer une copie.

Après les premières remarques du fin de l’année dernière (journal), j’ai fais des modifications pour rendre le programme plus clair, et mieux documenté. J’ai rajouté une option ‘-n’, pour lancer le programme sans faire de modification. Cela permet d’expérimenter.

Le programme peut s’utiliser d’un simple double clic, sous Windows.

Le programme est conçu sans option, ou presque, son interface ne pourrait pas être plus simple. Il fait 3 choses à la fois, ce qui n’est pas si évident à comprendre, finalement. Une image est plus parlante que des mots.

image doc

  • # Clarté ?

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

    Le graphique est compréhensible, mais peu clair à mon avis.

    Souvent, si un programme fait plusieurs choses, il est plus simple de l'expliquer au cas par cas.

    Par exemple, j'aurais peut-être expliqué les choses comme ça :
    1. Je veux copier un ensemble de fichiers E vers un endroit où ils n'existent pas
    2. Que se passe-t-il si l'un des fichiers est déjà présent ?
    3. etc.

    C'est un peu comme expliquer un DCVS à quelqu'un : tu commences par en cas simple, bien compréhensible, puis tu rajoutes des cas au fur et à mesure.

    • [^] # Re: Clarté ?

      Posté par . Évalué à 2. Dernière modification le 09/04/14 à 10:24.

      C'est ce que j'ai fais dans le précédent journal (avec peu de succès), et c'est ce qui est dans le readme.md du site web. Dis moi, si c'est plus clair.

      Si je détail trop les étapes, je noie l'auditoire, alors que ce qui est fait concrètement est assez simple (à des années lumières d'un DVFS).

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

      • [^] # Re: Clarté ?

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

        C'est compréhensible je pense, mais la question est :

        Combien d'utilisateurs penses-tu avoir ? As-tu des retours ?

        En y repensant, ton programme me fait penser aux programmes de gravure de CD que l'on utilisait (ou que l'on utilise toujours): on rajouté des fichiers voulu parmi ceux présents sur le disque de l'ordinateur, et une estimation de la taille avant gravure était affichée.
        Ensuite, la copie et gravure était lancée quand on le voulait.

        Est-ce qu'il ne serait pas plus simple de partager les fichiers via un réseau, et chacun peut choisir et copier ce qu'il veut ?

        • [^] # Re: Clarté ?

          Posté par . Évalué à 1.

          "Est-ce qu'il ne serait pas plus simple de partager les fichiers via un réseau, et chacun peut choisir et copier ce qu'il veut ?"

          Oui, c'est plus simple, mais pas toujours possible.

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

      • [^] # Re: Clarté ?

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

        Je trouve que le readme sur github est parfaitement clair (plus que le schéma d'ailleurs). C'est pas un outil que j'utiliserais forcément par rapport à mes besoins qui sont autres pour le moment, mais c'est astucieux, et c'est bien d'avoir pris en compte les remarques de l'autre journal (notamment sur le nom du projet).

        « I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond

        • [^] # Re: Clarté ?

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

          J'ai mis un moment à comprendre le cas d'usage, je pense que ça y est ! Mais je trouve toujours le schémas trop compliqué, je ne pense pas que j'aurais compris avec le schémas seul.

          Bon, le problème est pas facile à expliquer, mais je ferais au moins un schémas pour le cas d'usage le plus courant. Par exemple Alice veut copier des trucs de l'arborescence de Bob sur deux disques USB différents, parce que la taille totale de la copie ne rentre pas sur un seul disque. Là je comprend bien le problème, je ne sais toujours pas comment le résoudre avec « index2share », mais j'ai compris ce que ça pouvait m'apporter, donc je vais creuser !

          Les cas d'usage c'est ce qui parle aux gens, s'il comprennent l'intérêt de l'outil, ils feront des efforts pour comprendre comment ça marche.

          • [^] # Re: Clarté ?

            Posté par . Évalué à 1.

            Lit le cas d'usage dans le readme.md (visible sur github), dis moi, si c'est plus compréhensible.

            Le schéma est surtout là pour être exhaustif (ou presque).

            Dans ton cas, tu génère les petits fichiers, tu les ranges comme tu veux, et tu lances le programme à la base de l'endroit où tu fais les copies. Si tu veux la taille, il ne faut pas que le programme accède au fichier d'origine (il suffit de changer le nom d'un répertoire).

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

            • [^] # Re: Clarté ?

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

              Lit le cas d'usage dans le readme.md (visible sur github), dis moi, si c'est plus compréhensible.

              Alice has many USB keys with many files on it. Bob wants some of these files, but Alice cannot give her keys to Bob. Index2share program will create .idx file to enable Bob to choose files, with the file explorer. Then Alice will re-run index2share program, to finish the copies.

              Pas vraiment … :(

              Disons que pour comprendre je dois vraiment faire un effort, alors que j'ai l'impression qu'on pourrait l'exprimer plus simplement. Juste pour expliquer ce qui m'a dérangé :

              Alice has many USB keys with many files on it. Bob wants some of these files, but Alice cannot give her keys to Bob.

              Je pensais au début qu'Alice ne voulait pas partager ses fichiers (ses clefs USB) avec Bob, et que Bob cherchait à lui niquer la tronche (ça doit être le parallèle avec Alice et Bob de la crypto). J'aurais plutôt dit :

              « Alice has many USB keys with many files on it and wants to share her whole collection of files with Bob. »

              Là déjà je comprend qu'Alice possède une collection éparse de fichiers et souhaite faire un inventaire à l'aide des fichiers index, pour partager sa collection avec Bob.

              Index2share program will create .idx file to enable Bob to choose files, with the file explorer.

              Il m'a fallut un moment pour comprendre que tu supposes qu'Alice a fait tourner index2share sur l'ensemble de ses clefs. c'est bien ça ?

              On aurait pu dire :

              « Instead of sharing her keys one by one, she runs index2share, so as to index her whole collection. The result is a set of light index files (.idx files), that can be easily centralized on a storage device or sent by email (as they are ligthweight). Bob can thus browse Alices files collection through the set of index (by instance using his file explorer) »

              … to enable Bob to choose files, with the file explorer

              J'imagine que Bob fait une liste de fichiers souhaités, mais quid de cette liste ? Quelle forme ? Comment ?

              Then Alice will re-run index2share program, to finish the copies.

              Là j'imagine qu'Alice utilise la liste qu'à fait Bob, mais je comprend pas si on a besoin que toutes les clefs soient montées ou si on peut faire une copie itérative, ni comment on fourni la liste de Bob au programme. Et je viens de comprendre qu'Alice copiait les fichiers sur un support dédié à l'échange avec Bob. C'est bien ça ? Si oui, ça serait cool de l'expliciter.

              Bon, c'est pas contre toi, le problème est chiant à expliquer/comprendre :)

              • [^] # Re: Clarté ?

                Posté par . Évalué à 1.

                La "liste" de Bob est une arborescence de fichier .idx. Logiquement, le schéma devrait aider à comprendre quoi faire.

                Bob copie cet arborescence de fichier .idx sur une clef usb (par exemple). Alice récupère la clef, la branche sur sa machine, et branche aussi tous ses disques (ou pas on s'en fout), elle lance index2share à la base de la liste de Bob. Le programme fait les copies.

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

                • [^] # Re: Clarté ?

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

                  Ouais, c'est bien ce que je pensais : c'est super puissant, mais pas évident à appréhender à première vue !

                  Là c'est bon, je pense avoir bien compris le truc.

                  • [^] # Re: Clarté ?

                    Posté par . Évalué à 2.

                    Tu penses l'utiliser  ?

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

                    • [^] # Re: Clarté ?

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

                      Honnêtement je ne fais que très très rarement du partage de fichiers, mais je trouve l'outil très intéressant dans son concept.

                      Un truc qui pourrait être intéressant, c'est de ré-exploiter ton système d'index et d'intégrer index2share dans une solution de partage pair-à-pair, c'est plutôt cet aspect là qui m'intéresse :)

                      • [^] # Re: Clarté ?

                        Posté par . Évalué à 3.

                        Dans un système pair à pair, les liens magnet sont plus intéressant, mais beaucoup plus long à calculer (cf le précédent journal).

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

                        • [^] # Re: Clarté ?

                          Posté par (page perso) . Évalué à 4. Dernière modification le 10/04/14 à 13:41.

                          En aucun cas le magnet ne sert d'index, c'est une URI basée sur le contenu du fichier. Il a d'autres usages, potentiellement complémentaires avec index2share.

                          Exemple : j'installe un nœud (client/serveur) d'un protocole de partage pair-à-pair sur un raspi, avec disons une faible capacité de stockage. J'aurais sûrement envie d'utiliser un outil du genre d'index2share pour gérer la distribution de mes fichiers, lesquels sont répartis sur 2 disques durs USB, un ordi portable, un ordi fixe et 4 clef USB.

                          Le lien magnet ne résout pas ce problème (il en résout d'autres par contre), tandis qu'index2share semble le faire !

                          Il reste à gérer un problème de requête/réponse dans le protocole pair-à-pair (comment je synchronise la requête et la mise à disposition d'un fichier qui est sur une des clefs USB ?, par exemple), mais index2share gère déjà la collection locale.

                          Plus sérieusement, je m'imagine très bien avoir un cache d'une vingtaine de Go sur le Raspi, avec un système d'alerte qui me demande de connecter les devices externes, lorsque des fichiers sont requis. Et là index2share pourrait être utile pour gérer les copies de fichiers.

                          • [^] # Re: Clarté ?

                            Posté par . Évalué à 3.

                            ok. Je content de voir que cela pourrait être utilisé dans une chaine d'outil :)

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

                            • [^] # Re: Clarté ?

                              Posté par . Évalué à 1.

                              C'est également un cas d'usage qui pourrais m’intéresser, mais je ne suis pas sur d'avoir le temps de m'en occuper d'ici un moment même si tu fabriques un outil pour le faire.

                              bépo powered

                              • [^] # Re: Clarté ?

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

                                Et donc, où veux tu en venir robin ?

                                Si on travaille sur une API ou un wrapper tu aurais un langage de prédilection ?

                                • [^] # Re: Clarté ?

                                  Posté par . Évalué à 2.

                                  C'est vrai que mon message venait un peu comme un cheveux sur la soupe !

                                  Je n'ai actuellement pas mis en place de système de backup (c'est à dire qu'une fois toutes les pleines lunes je fais des copies à la main). Je me suis promis de regarder comment fonctionne rsync et owncloud, mais ce n'est toujours pas fait. Ayant récemment découvert git et svn, et ayant changé de pc la semaine dernière, (avec un double boot sur ces deux ordis, plus le fait que je peux être amené à utiliser des documents sur les ordis de mon école). J'ai utilisé git pour transférer tout mes documents d'un ordis et d'un OS à l'autre (en profitant au passage de la gestion des versions qu'offre git). Pour tout mes documents important – qui sont des fichiers textes (mes cours et mes programmes) ça à été parfait. J'ai donc actuellement tout mes documents importants qui sont sauvegardés dans le cloud et deux de mes ordis, en plus d'être versionnés.

                                  En plus de ça, comme pas mal de gens, j'ai pas mal de fichier de faible importances, mais qui prennent de la place (film, musique, photos), pour lesquels je n'ai actuellement pas de sauvegarde ou alors éparpillés entre 3 disques dur. D'après ce que j'ai compris, index2share me permettrait de savoir où se trouve mes fichiers (dans quel disque/ordis) et en combien de copies. Ayant un raspberry pi depuis peu, je pense m'en servir comme serveur de fichier pour pouvoir y accéder depuis n'importe où, mais je ne pense pas avoir assez d'espace disque pour tout stocker dessus (et mon budget disque dur est actuellement au plus bas ! D'autant que j'ai une bonne dizaine de disque de 100G inutilisés).
                                  Si j'ai bien compris, en couplant index2share avec du p2p, je pourrait obtenir automatiquement un fichier à condition que mon raspberry pi ou mon deuxième ordi soit démarrés et les possèdent. J'ai bon ? Du coup j'aurais la possibilité de faire des copies et des déplacement de fichiers de manière aisé, tout évitant les copie inutiles (je n'ai pas besoin de copie de mes films par exemples), et en connaissant l'emplacement physique de mes documents (ce qui me permettrait de mettre à profit ces vieux disques).

                                  Au passage, est ce qu'il existe déjà un outils qui ferait tout cela ?

                                  Pour ce qui est du langage, je ne fait que du C (je n'aime pas trop, mais dans l'embarqué on n'a pas trop le choix) et du C++. Je ne suis pas sur que ce soit le plus adapté.

                                  bépo powered

                                  • [^] # Re: Clarté ?

                                    Posté par . Évalué à 2.

                                    C'est pas un truc comme ça que tu cherches : http://camlistore.org/

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

                                    • [^] # Re: Clarté ?

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

                                      Ça à l'air bon ça, faut que jette un œil :)

                                    • [^] # Re: Clarté ?

                                      Posté par . Évalué à 2.

                                      J'ai commencé à regarder ce que c'était. Est ce que tu l'utilise, est-ce que tu as des retours. Sur le papier ça semble pas mal, mais est ce que ça monte correctement en charge (vu que l'on ne peux rien supprimer, est ce que si on manipule 4 ou 500G de données, on ne risque pas rapidement d'être à court de place, …). Je trouve dommage qu'il n'y ai pas une présentation de 10 minutes (et avec une qualité audio meilleure que celle de leur présentation). Je me pose ces questions, car si je met en place un système de sauvegarde, je veux pouvoir en changer facilement, mais surtout m'assurer qu'il soit fiable. Même si c'est pour un usage perso, c'est toujours frustrant de perdre des fichiers.

                                      bépo powered

                                      • [^] # Re: Clarté ?

                                        Posté par . Évalué à 2.

                                        non, je n'utilise pas. Disons que index2share devait être à l'origine à un truc comme camlistore. Les inodes seraient des vrai fichiers, qui pointe sur d'autre fichiers en utilisant des hash comme git.

                                        En réduisant mes ambitions, j'ai fait index2share, mais camlistore semble avoir réussi ce parie de mettre des fichiers partout, et d'avoir des inodes qui pointent n'importe où, avec la redondance incluse. Même le chiffrage semble inclus. Par contre, je n'ai pas vu si il y a avait une clef unique par fichier, ce qui rend plus facile le partage.

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

                                  • [^] # Re: Clarté ?

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

                                    J'essaie de répondre rapidement :)

                                    Pour ton histoire de backup, tu peux au moins jeter un œil à rdiff-backup, c'est comme rsync mais en mieux je dirais (j'ai comme toi pour projet d'automatiser proprement mes backups, et je pense que c'est ce que je choisirai).

                                    Au passage, est ce qu'il existe déjà un outils qui ferait tout cela ?

                                    Ben pas vraiment, mais si tu est dans un LAN (disque dur tous branchés sur des machines chez toi), tu peux regarder vers du système de fichiers distribué (à commencer par NFS), tout simplement. Couplé à du rsync (ou rdiff-backup), tu devrais pouvoir sortir un truc simple et puissant.

                                    Pour l'aspect pair-à-pair, il existe des projets comme Tahoe LAFS qui consisteraient à faire du backup communautaire, avec de la redondance et tout et tout. Je ne sais pas si ça correspond à ce que tu recherches, mais tu peux regarder le résumé dans cette dépêche :)

                                    • [^] # Re: Clarté ?

                                      Posté par . Évalué à 1.

                                      Super, merci pour les infos.

                                      Quand je voit comme la migration de mes documents à été aisé avec git, je suis persuadé que mettre en place ce genre de solution sera une très bonne idée. D'autant plus qu'actuellement, tout ce qui est sur mon nouvel ordi est sauvegardé et synchronisé du coup, je sais que je peux le formater ou autre dans l'urgence sans perte de données. C'est très agréable.

                                      bépo powered

  • # quand même

    Posté par . Évalué à 4.

    Je suis interpellé à l'idée de savoir dans quel contexte un tel besoin est survenu.
    C'est pas tant que j'ai envie de rabâcher 101 alternatives, juste envie de comprendre dans quel monde de psychopathe on doit se déplacer d'un bureau à l'autre pour s'échanger des fichiers.

    par contre, non le chart n'est pas plus clair malheureusement, en ce qui me concerne.
    C'est ce commentaire qui m'a ouvert les yeux http://linuxfr.org/nodes/100481/comments/1503871

    • [^] # Re: quand même

      Posté par . Évalué à 5.

      "Je suis interpellé à l'idée de savoir dans quel contexte un tel besoin est survenu."

      Quand un pote, arrivait avec une liste en papier…

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

      • [^] # Re: quand même

        Posté par . Évalué à 2.

        OK. C'est peut être moi le psychopathe, je ne sais pas, je ne sais plus : )

  • # autrement

    Posté par . Évalué à 2.

    Bon j'avais dis ne pas rabâcher les 101 alternatives, mais cependant je voudrais en citer un projet tout de même.

    git-annex

    Une surcouche de git initialement créée pour gérer des fichiers binaires dans un repos.

    La dessus, d'après ce que j'ai compris, tu cherches à gérer des fichiers plutôt gigantesque, donc les versionner, même avec git annex n'est pas terrible.

    Cependant, j'espère qu'éventuellement tu y trouveras une source d'inspiration,

    http://git-annex.branchable.com/

    • [^] # Re: autrement

      Posté par . Évalué à 1.

      Cela y ressemble beaucoup, la preuve, je n'ai pas tout compris de son fonctionnement :)

      En gros, il s'agit d'un hack par dessus Git pour gérer les fichiers énormes en utilisant un système d'index comme index2share. Mais je n'ai pas vu si il y avait un moyen simple de partager les index. J'imagine qu'il faut utiliser git des 2 cotés, et un lieu de stockage.

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

      • [^] # Re: autrement

        Posté par . Évalué à 2.

        En gros, il s'agit d'un hack par dessus Git pour gérer les fichiers énormes en utilisant un système d'index comme index2share.
        oui.

        Comme index2share le système échange d'abords des hash de fichiers.
        Charge à l'utilisateur après de télécharger le contenu via la bonne commande.
        La ligne de commande lui permettant, si je ne me trompes pas, de lister les fichiers d'index, voir des les checkout sans récupérer le contenu.

        J'imagine qu'il faut utiliser git des 2 cotés, et un lieu de stockage.
        oui.

        Éventuellement je pourrais t'en dire plus, plus tard, j'ai un projet dans lequel je souhaiterais le consommer, donc je dois me farcir la doc de git-annex.

        • [^] # Re: autrement

          Posté par . Évalué à 1.

          index2share n'utilise pas de hash, sinon j'aurais utiliser lien magnet bien plus complet. Un hash d'un fichier de 1 Go, c'est long. index2share traite 30000 fichiers en quelques secondes. Les .idx contiennent uniquement un path complet et la taille du fichier.

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

        • [^] # Re: autrement

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

          Éventuellement je pourrais t'en dire plus, plus tard, j'ai un projet dans lequel je souhaiterais le consommer, donc je dois me farcir la doc de git-annex.

          J'espère que tu paieras ton journal, même pas très long :)

  • # ocaml

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

    En plussant ton repo github, j'ai vu que le source était en caml. Ce qui m'a fait penser à unison, qui est écrit dans le même langage.

    On peut imaginer des extensions, peut être. Il faut savoir que l'énorme avantage de unison est que le protocole de cohérence des fichiers synchronisés a été prouvé formellement par Benjamin Pierce et son équipe, ce qui n'est pas négligeable :)

    On ne sait jamais….

    • [^] # Re: ocaml

      Posté par . Évalué à 2.

      J'ai utilisé Unison à un moment, le protocole a du bouger, car il était incompatible entre version, j'en garde un mauvais souvenir (Debian vs Mandrake, à s'arracher les cheveux pour comprendre le problème).

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

      • [^] # Re: ocaml

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

        Merci pour le retour (je n'avais jamais utilisé), j'arrêterai d'en faire la pub alors :)

        • [^] # Re: ocaml

          Posté par . Évalué à 1.

          cela date d'un moment comme expérience (2005 ?), cela a peut être changé depuis.

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

          • [^] # Re: ocaml

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

            Le projet à l'air toujours actif.

            Idéalement il faudrait tester la dernière version :)

Suivre le flux des commentaires

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