Juste pour tenir au courant

J'essayes de faire une archive php (.phar) à la manière de composer pour rendre le script exécutable en un seul fichier. Mais pour l'instant mes tests ne fonctionnent pas. J'utilise https://github.com/humbug/box pour générer l'archive mais ça veut pas...

Je continue mes investigations mais ça risque de traîner le temps que je trouve le problème.

    Bon j'avais un peu de temps cette après-midi, j'ai testé le script.
    Normalement il fonctionne pour tous les types d'installation rutorrent qui ont un point de montage xmlrpc.
    Je fais un petit tuto pour les personnes qui veulent bien tester.
    Le script ne risque pas de mettre la pagaille dans vos fichiers, il supprime rien sans vous demander avant 😅

    Installation de rtorrent-cleaner

    Bon pour commencer il faut php 7 au minimum pour qu'il fonctionne avec 2 extensions (php-bcmath et php-dom)
    Les commandes ci-dessous sont correctes pour debian 9
    Si vous avez déjà php d'installé, vous pouvez vérifier votre version avec cette commande php -v

    Installation de php 7

    apt-get install php php-bcmath php-dom

    ⚠ si php-dom ne fonctionne pas, essayez avec php-xml

    Installation de composer pour l'utilisateur root

    curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
    chmod +x /usr/local/bin/composer
    mkdir /root/.composer && composer install -d /root/.composer
    echo 'export PATH="$PATH:/root/.composer/vendor/bin"' >> /root/.bashrc
    source /root/.bashrc

    Installation de rtorrent-cleaner

    composer global require magicalex/rtorrent-cleaner

    Utilisation

    Il y a deux options importante obligatoire --url-xmlrpc et --home

    Un exemple cette commande vous fait un rapport sur les fichiers en trop (généralement mal supprimés par rutorrent, mais aussi les fichiers qui manquent sur les torrents alors qu'ils sont en seed.

    rtorrent-cleaner report --url-xmlrpc=https://username:password@domain.tld/URI --home=/home/username/torrents

    Cette commande rm supprime les fichiers en trop, elle vous demande confirmation pour chaque fichier
    Il existe une option --assume-yes pour supprimer les fichiers en trop sans confirmation.

    rtorrent-cleaner rm --url-xmlrpc=https://username:password@domain.tld/URI --home=/home/username/torrents

    ⚠ Le script peut mettre du temps en fonction de l'url que vous appelez, notamment les urls distantes.
    Il faut préférer utiliser http://localhost si votre serveur web vous le permet.
    Au pire, Il y a une barre de progression 😁
    Si vous avez beaucoup de torrents ça mettre du temps de toute manière 😅

    Performance

    Pour les personnes qui ont beaucoup de torrent le script peut mettre beaucoup de temps pour récupérer la liste des fichiers via rtorrent. Plusieurs heures apparement pour @kokogakayui
    Cela dépend des urls que vous appelez. Une url avec une auth basic + nom de domaine distant.
    Exemple https://user:pass@rutorrent.domain.tld/USER cette url pour les personnes qui ont beaucoup de torrent ça risque d'être interminable. Une solution existe, c'est de passer en local. Voici la marche à suivre.

    nano /etc/nginx/sites-enabled/cleaner.conf
    server {
        listen 127.0.0.1:8888;
        charset utf-8;
    
        location = /RPC {
            include scgi_params;
            scgi_pass 127.0.0.1:5000;
        }
    }

    ensuite redémarre nginx

    service nginx restart

    Par contre il faut bien indiquer le port scgi de votre user rtorrent. ici c'est le port 5000 scgi_pass 127.0.0.1:5000;
    Cela va créer un point de montage http://localhost:8888/RPC accessible que en local sur votre serveur.

    ensuite

    rtorrent-cleaner report --url-xmlrpc=http://localhost:8888/RPC --home=/home/username/torrents -v

    ça serait intéressant de voir la différence de temps. Ajoute l'option -v ça ajoute le temps écoulé sur la barre de progression.

    Pour moi l'install se passe à priori bien, mais je tombe sur un command not found quand je veux lancer rtorrent-cleaner... Il est censé s'installer où ?

      kokogakayui t'as installé php-bcmath?

      T'as fait quoi exactement?
      tu peux mettre ici le résultat de la commande echo $PATH

      Bon par contre ça me donne ça : The "--url-xmlrcp" option does not exist.
      EDIT : Bon alors pour le PATH, je pense qu'il y avait un souci dans la commande que tu donnes, parce que chez moi en suivant tes instructions ça s'est installé sous
      ~/.composer/vendor/bin
      et pas
      ~/.config/composer/vendor/bin

      Rien de bien méchant. Par contre ouais "The "--url-xmlrcp" option does not exist". J'ai essayé sans le = pour voir mais même résultat.

      Pour info j'ai testé avec plusieurs commandes :
      rtorrent-cleaner report --url-xmlrcp=https://koko:mdp@chezmoi.com/rutorrent --home=/home/username/torrents/music
      rtorrent-cleaner report --url-xmlrcp=https://koko:mdp@localhost:5001 --home=/home/username/torrents/music

      Mais aussi report --xmlrcp https://koko:mdp@localhost:5001 --home=/home/username/torrents/music
      Pour voir si ça venait pas du "="....

        Magicalex haha oui j'ai fini par capter la coquille.

        Bon par contre :
        Avec rtorrent-cleaner report --url-xmlrpc=https://koko:mdp@chezmoi.com/rutorrent --home=/home/username/torrents/music
        ça me donne :
        In Client.php line 234: Not Allowed
        et avec rtorrent-cleaner report --url-xmlrpc=https://koko:mdp@localhost:5001 --home=/home/username/torrents/music
        ça me donne :
        In Socket.php line 332: Unable to enable crypto on TCP connection localhost: make sure the "sslcafile" or "sslcapath" option are properly set for the environment.
        In Socket.php line 303: stream_socket_enable_crypto(): SSL: Success

          kokogakayui

          Alors pour l'option --url-xmlrpc
          pour -> /URI il faut mettre l'uri de votre mount point pour le tuto de @ex_rat générelement c'est le nom de votre utilisateur en majuscule /<USERNAME>

          soit par exemple

          rtorrent-cleaner report --url-xmlrpc=https://koko:mdp@chezmoi.com/KOKO --home=/home/koko/torrents

            Magicalex

            Haha ok. En effet c'est mieux. Ça a l'air de marcher. La barre de progression reste à 0%, mais je te tiens au jus quand ça aura avancé 🙂 Merci à toi encore une fois !

              Magicalex

              Via mon image docker le script s'exécute en 33sec
              via mon serveur web (proxy) 9min

              La différence est énorme...
              ps ma seedbox est sous docker avec l'image de @xataz

                Magicalex
                Sur un dossier de combien de torrents ? La j'ai relancé après update sur un dossier plus petit, mais ça mets quand même une éternité haha. j'en suis à 6%...
                EDIT : en fait je pense même que la taille du dossier n'a rien à voir, mais la quantité de torrents dans rutorrent peut-être... Et la je suis mal haha

                  kokogakayui c'est pas le nombre de fichier le problème c'est le nombre de requête à faire.

                  J'ai essayé de réduire le nombre de requête vers rtorrent mais quand y a beaucoup de torrents on peut pas faire autrement. Et si l'url de l'option --url-xmlrpc met du temps à répondre à ba ça traine.

                  Magicalex

                  J'ai volontairement testé avec un dossier qui contient moins de 10 fichiers.... J'en ai plus donc à mon avis c'est de ce côté là que ça traine. J'en suis à 10% là...

                    kokogakayui
                    J'ai une idée que tu peux tester

                    nano /etc/nginx/sites-enabled/cleaner.conf
                    server {
                        listen 127.0.0.1:8888;
                        charset utf-8;
                    
                        location = /RPC {
                            include scgi_params;
                            scgi_pass 127.0.0.1:5000;
                        }
                    }

                    ensuite redémarre nginx

                    service nginx restart

                    Par contre il faut bien indiquer le port scgi de ton user rtorrent ici scgi_pass 127.0.0.1:5000;
                    ça va créer un point de montage http://localhost:8888/RPC accessible que en local sur ton serveur.

                    ensuite

                    rtorrent-cleaner report --url-xmlrpc=http://localhost:8888/RPC --home=/home/koko/torrents -v

                    ça serait intéressant de voir la différence de temps. Ajoute l'option -v ça ajoute le temps écoulé sur la barre de progression.

                      Magicalex
                      Juste excellent comme solution ! Je suis passé de plusieurs heures à 7 minutes. Bien joué !

                      Par contre du coup j'ai essayé de tester sur /torrents/mon-dossier-tracker-que-jutilise-rarement, mais le résultat compare avec l'intégralité de mes torrents, du coup le résultat me sert à rien.

                      Là je viens de relancer sur /torrents tout court... 6 minutes, encore mieux. Par contre pareil, ça me donne quasiment tous mes torrents en missing file, alors que les fichiers en question sont bien là.

                      J'attends ton retour 🙂