Ultracopier 2

Posté par  (site web personnel) . Édité par Ysabeau 🧶, ZeroHeure, Davy Defaud, gUI, palm123 et Benoît Sibaud. Modéré par Davy Defaud. Licence CC By‑SA.
20
8
août
2019
Administration système

Ultracopier est un logiciel de copie de fichiers sous licence GPL v3, disponible pour plusieurs systèmes. Il remplace la copie de fichiers de votre gestionnaire de fichiers. Il permet la gestion de la liste de copies, la reprise sur erreur ainsi que la gestion des erreurs et collisions.

Pub Ultracopier v2

Les nouveautés de la version 2

Passage de Qt à C

Le passage de Qt à C permet de ne pas subir les divers bogues jamais corrigés et limitations de Qt. L’ancien moteur est toujours disponible sous la forme d’un greffon.

Adaptation à la plate‐forme pour de meilleures performances et une meilleure gestion des erreurs

On passe donc d’un moteur générique à un moteur pour chaque système d’exploitation dont les données internes, mode d’accès aux fichiers et dossiers, sont spécifiques. Cela permet d’avoir une meilleure gestion des erreurs du disque, du système de fichiers et du système d’exploitation, et de disposer d’une gamme complète d’accès aux fichiers (asynchrone et synchrone, classique ou en diffusion). Avec le nouveau moteur, les performances sont trois fois supérieures dans certains cas. Et je pense pouvoir aller encore plus loin dans les performances.

Simplification

Plus le logiciel est complexe, plus il y a des bogues potentiels. De plus, comme ce sont nos données que le logiciel manipule, et que les utilisateurs veulent des fonctionnalités que personne n’utilise, j’ai décidé de retirer les fonctionnalités les plus invasives et les moins utiles (somme de contrôle, pause, limitation de débit).

Changement de licence

La licence payante d’Ultracopier version 1 n’est pas compatible avec la version 2, car la version 1 a été supportée pendant de nombreuses années. Cela permettra de financer un avancement plus rapide de la version 2.

Nouveaux portages sur WebAssembly et Android

GNU/Linux est toujours pris en charge. Après une période de stabilisation j’étudierai son intégration dans les distributions (vous êtes les bienvenus pour aider). Haiku, BSD, etc., sont toujours pris en charge ; mais à cette liste viennent à présent s’ajouter WebAssembly et Android.

Réorganisation de l’interface

Dans la nouvelle interface par défaut, aucune information n’a été retirée ; l’interface a seulement été réorganisée. En revanche, d’autres informations ont été ajoutées, comme la vitesse par taille de fichiers. Tout le monde a sa vision de la meilleure interface (contenu, masqué, prioritaire…), les deux interfaces qui restent maintenues devraient contenter le plus grand nombre, les autres interfaces n’étaient jamais utilisées. Vous êtes, bien sûr, libres de proposer vos interfaces.

Enfin, si certains pensent que l’avantage de ce type de logiciel est d’avoir plus de performance, ce n’est qu’une partie de ses fonctionnalités.

Aider le projet

Si vous voulez m’aider ou aider à développer du logiciel :

  • je cherche du travail en télétravail dans les domaines du développement, de l’administration système ou des télécommunications ;
  • louez vos serveurs privés virtuels ou de l’hébergement chez Confiared (Confiared est mon entreprise et elle appuie le projet).

Aller plus loin

  • # Fonctionnalités supprimées

    Posté par  . Évalué à 10.

    Bonjour,

    Retirer les fonctionnalités somme de contrôle, pause et limitation de débit me paraît étrange tout de même.

    C'est ce genre de fonctionnalités qui me paraît les plus intéressantes dans ce type de logiciel… Après ça n'engage que moi.

    • [^] # Re: Fonctionnalités supprimées

      Posté par  (site web personnel, Mastodon) . Évalué à 9.

      +1, la pause et la limitation de débit étaient les fonctionnalités les plus utiles pour moi, parce que celles qu'on ne trouve généralement pas dans les outils intégrés de l'OS.

      La connaissance libre : https://zestedesavoir.com

    • [^] # Re: Fonctionnalités supprimées

      Posté par  (site web personnel) . Évalué à 10.

      Le throttling et pause ont de lourde implications au niveau performance (perturbation du buffer, du scheduler, sans compter le passage par l'user space) et vu que les gens ne parle presque que des performances d'Ultracopier… par exemple la fonction système FileCopyEx de windows ne le permet pas (et vu que 95% des utilisateurs sont sous windows).

      Je ne suis pas opposé a un retour de certaine fonctionnalité si j'arrive a les faire de manière plus efficaces et moins intrusive.

      Le somme de contrôle son peu utile, car si les fonctions de base dise ok, il y as de grande chance que le checksum dise ok, surtout si le fichier est en cache mais que le FS ou device est corrompu.

      Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

      • [^] # Re: Fonctionnalités supprimées

        Posté par  . Évalué à 4. Dernière modification le 09 août 2019 à 12:42.

        Merci pour cette dépêche et ce partage.

        Concernant la somme de contrôle, le cache en question n'est pas purgeable avant contrôle ? Ou c'est celui du disque plus éventuellement la mémoire ?
        Microsoft avait expliqué dans un article pourquoi il n'avait pas implémenté le checksum avec les arguments que tu avances.
        En tous les cas, c'est utile pour les gros fichiers, dépassant la taille du cache.
        Si demander au système de contrôler ce qu'il fait est en effet problématique, le fait que ce soit un outil non natif n'est-il pas une précaution supplémentaire ? Diminuant la "grande chance" dont tu parles ?

        • [^] # Re: Fonctionnalités supprimées

          Posté par  (site web personnel) . Évalué à 4.

          Je n'est pas trouver comment faire, il faudrai le faire pour chaque OS et cela dégraderai les performances.

          Pour te répondre je prendrai le cas de Qt: qui est multi-platforme et donc abstraie la partie native: aucun controle sur le cache, ne peu pas manipulé des fichiers avec accent si l'encodage ne corresponds pas au FS, imposible de définir la date d'un fichier/dossier car selon Qt:

          c'est pas utile, personne ne vas en avoir le besoin
          Donc avec Qt ca reviens à le faire à la volé.

          Je continuerai à chercher une solution.

          Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

    • [^] # Re: Fonctionnalités supprimées

      Posté par  . Évalué à 2.

      Pareil pour moi : la pause était l'une des fonctions plus utilisées. Sans elle, l'application a nettement moins d'intérêt.

      • [^] # Re: Fonctionnalités supprimées

        Posté par  . Évalué à 1.

        Je ne vois pas bien l'intérêt de mettre en pause une copie ? Je doute pas qu'il y en a (j'ai même découvert que c'est inclus de base dans win10). Tu peux m'expliquer ?

        • [^] # Re: Fonctionnalités supprimées

          Posté par  . Évalué à 9.

          Salut !

          Je ne vois pas bien l'intérêt de mettre en pause une copie

          Moi non plus mais je vois un exemple. Je ne sais pas si ça peut éclairer.

          C'est super hypothétique parce que je ne le fais pas, mais disons :
          - j'ai un collègue de travail qui me passe des films à voir,
          - je commence la copie et retourne à mon travail,
          - là j'ai un calcul à lancer qui va aussi faire de la lecture/écriture sur disque alors qu'il est sollicité par la copie,
          - hop, pause de la copie pour avancer dans le travail et reprise plus tard.

          Ça vaut ce que ça vaut cet exemple, mais peut-être que ça répondra à ta question. Ou pas.

          Matricule 23415

          • [^] # Re: Fonctionnalités supprimées

            Posté par  . Évalué à -1.

            Je crois pas qu'il y ait beaucoup d'utilisateurs d'ultracopier qui en sont à savoir qu'une tâche charge les io. C'est compliqué d'utiliser ionice pour ce genre d'usages tu pense ?

            • [^] # Re: Fonctionnalités supprimées

              Posté par  . Évalué à 3. Dernière modification le 11 août 2019 à 20:01.

              Salut !

              Je crois pas qu'il y ait beaucoup d'utilisateurs d'ultracopier qui en sont à savoir qu'une tâche charge les io. C'est compliqué d'utiliser ionice pour ce genre d'usages tu pense ?

              Bin là, c'est une colle. Je ne sais pas.

              Déjà que mon idée était hypothétique, rajouter en plus une autre hypothèse la rend complètement caduque :)

              Ce que je sais par contre c'est que pour le boulot, il m'arrive de devoir lire/écrire sur disque et plus ça va vite, mieux c'est. Un ionice me fera juste encore perdre du temps.

              Matricule 23415

              • [^] # Re: Fonctionnalités supprimées

                Posté par  . Évalué à 1.

                Un ionice me fera juste encore perdre du temps.

                Tu peux avoir des écarts de priorité tellement fort que je doute que tu ai une différence sensible.

        • [^] # Re: Fonctionnalités supprimées

          Posté par  (site web personnel) . Évalué à 9. Dernière modification le 11 août 2019 à 15:06.

          Tu commences la copie, et tu te rends compte qu'il n'y aura pas assez de place.
          Plutôt que d'avoir une erreur, tu préféreras mettre en pause le temps de faire de la place avant de poursuivre la copie.

          Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

          • [^] # Re: Fonctionnalités supprimées

            Posté par  . Évalué à 1.

            Pour ça il y a encore mieux le logiciel te pourrait alerter (que tu pourrais choisir d'ignorer). C'est beaucoup kids simple à implémenter et ça gère des cas en plus (tu peux te rendre compte que tu ne pourra pas utiliser cette clef USB).

        • [^] # Re: Fonctionnalités supprimées

          Posté par  (site web personnel) . Évalué à 6.

          J'utilise la fonction pause d'une copie habituellement pour les copies qui durent longtemps. Si une copie dure longtemps, il m'arrive d'avoir d'autres tâches à gérer en même temps. Le truc, c'est que copier occupe le processeur et le disque dur, ce qui peut me gêner dans le cas d'autres tâches (parfois même, une autre copie) à finir avant la copie longue prenne fin.

          C'est un peu le même problème dans le cas d'un téléchargement d'ailleurs, sauf qu'on peut aussi y ajouter le problème de la bande passante, souvent plus limitée et donc plus contraignant.

    • [^] # Re: Fonctionnalités supprimées

      Posté par  . Évalué à 2.

      En fait, il reste que la reprise en cas de coupure d'utile, limite il vaut mieux utiliser MiniCopier.

  • # Performances : comment ?

    Posté par  (site web personnel, Mastodon) . Évalué à 7.

    Hello,

    Un passage m'interpelle :

    Avec le nouveau moteur, les performances sont trois fois supérieures dans certains cas. Et je pense pouvoir aller encore plus loin dans les performances.

    Chez moi – avec les outils intégrés à l'OS – les copies sont systématiquement limitées par les I/O (disque ou réseau selon le cas). Du coup ça m'intrigue que tu puisses faire mieux.

    Pourrais-tu nous expliquer comment tu arrives à un tel résultat ? Parce que ça peut être clairement une fonctionnalité qui à elle seul pourrait faire choisir ton outil !

    La connaissance libre : https://zestedesavoir.com

  • # Et ?

    Posté par  . Évalué à 1.

    Bonjour,

    et comment puis-je faire pour essayer ultracopier 2 sur mon Linux Mint ?

    Merci.

    arnauld

  • # Gestion du son ?

    Posté par  . Évalué à 3.

    C'est à dire ?

    • [^] # Re: Gestion du son ?

      Posté par  (site web personnel) . Évalué à 5.

      Maintenant on peu jouer des sons sur certain événements, par exemple la fin de la copie.

      Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

      • [^] # Re: Gestion du son ?

        Posté par  (site web personnel, Mastodon) . Évalué à 6.

        Peut-être conviendrait-il de remplacer Gestion du son par Effets sonores dans ce cas (ou une autre formule équivalente), ou ne pas mettre ça en avant.

        « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

  • # Passage de Qt à C

    Posté par  . Évalué à 10.

    Je ne suis pas sûr de comprendre cette partie : Qt est un ensemble de bibliothèques, entre autre pour la partie graphique, pouvant être utilisées en C++, Python et autres, là où C est un langage de programmation pouvant utiliser des bibliothèques externes, entre autre pour la partie graphique.
    C'est plutôt un passage de Qt/C++ à Gtk/C qui est annoncé du coup ?

    Emacs le fait depuis 30 ans.

    • [^] # Re: Passage de Qt à C

      Posté par  (site web personnel) . Évalué à 10. Dernière modification le 09 août 2019 à 00:35.

      Je vais clarifier ce point, désolé si je suis technique, je passe de l'objet Qt QFile qui bug sur les problèmes d'encodage, caractère non affichable ou/et corrompu aux appelles système natif:
      - char * + open() sous Unix
      - std::wstring + CreateFile() sous Windows
      Et vu que les API native sont en C…

      Par contre je garde Qt pour le reste (comme l'interface)

      Mon projet libre: http://ultracopier-fr.first-world.info/, mon jeu libre: http://catchchallenger.first-world.info/

      • [^] # Re: Passage de Qt à C

        Posté par  . Évalué à 10.

        Tu aurais le rapport de bogue correspondant au problème que tu décris ?

      • [^] # Re: Passage de Qt à C

        Posté par  . Évalué à 7.

        Être technique, ici, tu peux, beaucoup de gens seront intéressés ;-)

        Je ne comprenais pas non plus ce point (passage de Qt à C), maintenant c'est plus clair.

  • # Je veux bien mais...

    Posté par  . Évalué à 4.

    Après un github, puis avoir suivi les consignes:

    find ./ -name '*.ts' -exec lrelease {} \;
    qmake ultracopier.pro

    erreur : Aucune règle pour fabriquer la cible « FacilityEngineVersion.cpp », nécessaire pour « FacilityEngineVersion.o ». Arrêt.

    ou en console

    WARNING: Failure to find: FacilityEngineVersion.cpp
    Ai-je raté quelque chose ?

    • [^] # Re: Je veux bien mais...

      Posté par  . Évalué à 3.

      Bizarre, on dirait que ce fichier n'a jamais été dans le repo (mais je suis une bille avec Git):

      [cpbx@unit Ultracopier]$ git log --diff-filter=D | grep -i FacilityEngineVersion
      [cpbx@unit Ultracopier]$

      Si c'est juste pour tester l'outil comme c'est mon cas, il est possible de créer le fichier afin d'y ajouter la méthode FacilityEngine::version():

      [cpbx@unit Ultracopier]$ cat > FacilityEngineVersion.cpp <<EOF
      #include "FacilityEngine.h"
      
      std::string FacilityEngine::version()
      {
          return "2.3.0.5";
      }
      EOF
      
  • # Euuuh ?

    Posté par  . Évalué à -1.

    Avec le nouveau moteur, les performances sont trois fois supérieures dans certains cas.
    Trois fois supérieur à quoi ? La version précédente ? Ce que fait l'OS ?

    Cela permet d’avoir une meilleure gestion des erreurs du disque
    Comment une application pourrait faire mieux que le système d'exploitation sur lequel il s'appuie.
    Comme si on me disait que HTTP permet de corriger les problèmes de la couche de liaison… ça n'a aucun sens puisqu'elle s'appuie dessus, nous ne sommes pas au même niveau.

    les moins utiles (somme de contrôle, pause, limitation de débit).
    Bon sang c'est vraiment pour ça que les développeurs/décideurs ont besoin de feedback client : c'était clairement les fonctionnalités les plus utiles, celle qui ne sont pas proposées par l'OS… c'est pour cela qu'on télécharger ton logiciel coco…

    Changement de licence
    Pas très clair… GPL/LGPLv3 ? Apache ? Shareware ? Freeware ?

    L'OS les faits en séquentiel, pas moi.
    N'importe quoi… sur un HDD peut-être, pas sur les SSD…

    • [^] # Re: Euuuh ?

      Posté par  . Évalué à 10.

      Avec le nouveau moteur, les performances sont trois fois supérieures dans certains cas.
      Trois fois supérieur à quoi ? La version précédente ? Ce que fait l'OS ?

      Logiquement c'est par rapport à la version précédente. Quand il y a une dépêche qui dit qu'elle fait mieux qu'avant, c'est évident qu'il parle de la version précédente. Par exemple quand on dit que Buster a 15k paquets de plus, on ne se demande pas si c'est 15k de plus que RedHat.

      Comment une application pourrait faire mieux que le système d'exploitation sur lequel il s'appuie.

      C'est quoi une application ? C'est quoi le système ? Linux ne sait pas faire de copie pour toi. Si tu veux le comparer à cp, cp et ultracopier sont toutes 2 des applications en espace utilisateur. Elles s'exécutent au même endroit et ont accès aux même API.

      Pourtant il y a bien des différences possibles. Copier un fichier ou une arborescence, ça ne consiste pas uniquement à appeler le bon appel système. On a déjà cp, rsync, dd ou ddrescue qui font les choses de manière très différentes. Il y a pleins de façon de gérer les erreurs : faire des essais supplémentaires, sauter le bloc,…

      Dire « le système » fait déjà tout ce qu'il faut c'est amha très réducteur.

      Bon sang c'est vraiment pour ça que les développeurs/décideurs ont besoin de feedback client : c'était clairement les fonctionnalités les plus utiles, celle qui ne sont pas proposées par l'OS… c'est pour cela qu'on télécharger ton logiciel coco…

      Toi tu as les feedbacks que lui n'a pas ? Tu sais mieux que lui pourquoi son logiciel est utilisé ? Va falloir un peu plus qu'une simple affirmation coco

      Changement de licence
      Pas très clair… GPL/LGPLv3 ? Apache ? Shareware ? Freeware ?

      Nul n'est plus aveugle que celui qui refuse de voir…

      La licence payante d’Ultracopier version 1 n’est pas compatible avec la version 2, car la version 1 a été supportée pendant de nombreuses années. Cela permettra de financer un avancement plus rapide de la version 2.

    • [^] # Re: Euuuh ?

      Posté par  . Évalué à 5.

      Comme si on me disait que HTTP permet de corriger les problèmes de la couche de liaison… ça n'a aucun sens puisqu'elle s'appuie dessus

      C'est tout à fait faisable pour un système de corriger les problèmes du système sur lequel il s'appuie. Pour rester sur les couches réseau: TCP corrige les problèmes de perte ponctuelle de paquets ou d'arrivée dans le désordre de la couche IP.

      • [^] # Re: Euuuh ?

        Posté par  (site web personnel) . Évalué à 0.

        TCP corrige les problèmes de perte ponctuelle de paquets ou d'arrivée dans le désordre de la couche IP.

        Ce ne sont pas des "problèmes" d'un point de vue IP, puisqu'IP ne garantie pas l'ordre des paquets ni que les paquets arrivent tous au destinataire, et c'est tout-à-fait délibéré.

        • [^] # Re: Euuuh ?

          Posté par  . Évalué à 1.

          Il n'a pas dis que c'était un problème du point de vu d'IP. Les échecs d'écriture ne sont pas un problème d'un point de vu du système, il n'offre aucune garantie à ce niveau là. Son travaille c'est d'essayer d'écrire et potentiellement de te remonter les erreurs (mais pas forcément vu que les écritures sont asynchrones).

Suivre le flux des commentaires

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