Aerya en distant rtorrent-cleaner ne fonctionne pas dans la mesure ou j'ai besoin d'avoir accès aux fichiers localement.
A moins de me connecter en ssh mais bon...

    Magicalex Effectivement... mybad. Je l'aurais quand même passé en argument, ça me semble être le plus ouvert pour que chacun puisse l'adapter si besoin.

    Aerya ça m'a intrigué cette histoire de rtorrent-cleaner à distance.

    Du coup j'ai fais des tests et pour se connecter en sftp via php il existe une extension php-ssh2
    Voici un bout de code qui fonctionne avec la lib symfony/finder

    #!/usr/bin/env php
    <?php
    
    require 'vendor/autoload.php';
    
    use Symfony\Component\Finder\Finder;
    
    $session = ssh2_connect('domain.tld', 22);
    ssh2_auth_pubkey_file(
        $session,
        'username',
        '/home/username/.ssh/id_rsa.pub',
        '/home/username/.ssh/id_rsa'
    );
    
    $sftp = ssh2_sftp($session);
    
    $finder = new Finder();
    $finder->in('ssh2.sftp://'.intval($sftp).'/path/to/folder')->files()->depth(0);
    
    foreach ($finder as $file) {
        echo 'filename: '.$file->getPathname().PHP_EOL;
    }

    Je laisse ça ici, ça peut inspirer du monde. Mais perso je vais pas le rajouter au code sauf si quelqu'un fait une PR sur github.
    Je préviens, les performances sont pas folles en sftp et ça va complexifier grandement le fonctionnement de rtorrent-cleaner.

    Sinon je pense que tu as raison @Aerya je vais passer le paramètre en argument ça sera plus logique et élégant.

    🎉 J'ai sorti la version 0.9.4 🎉

    Cette nouvelle version par rapport à la 0.9.3 améliore quelques points

    • Le message d'erreur de connexion à rtorrent est plus explicite.
    • Suppression des options --scgi= et --port= par un argument.

    Pour la dernière amélioration ça peut paraître inutile mais en réalité c'était des options que je ne pouvais pas vous forcer à renseigner. Comme j'utilise symfony/console j'essaye de me conformer un maximum à la norme.

    Quelques exemples pour vous montrer ce qui change.

    rtorrent-cleaner report 127.0.0.1:5000 # hostname:port
    rtorrent-cleaner report --exclude-dirs=movies 127.0.0.1:5000
    rtorrent-cleaner report --exclude-files=*.srt /run/php/.rtorrent.sock
    
    rtorrent-cleaner rm /run/php/.rtorrent.sock
    
    rtorrent-cleaner torrents localhost:5000
    
    rtorrent-cleaner mv /run/php/.rtorrent.sock /home/user/old
    rtorrent-cleaner mv localhost:5000 /home/user/old

    Si vous avez des difficultés pour refaire fonctionner le script n'hésitez à vous manifester ici.

    Pour les boulets comme bibi il manque une option pour Quitter quand tu lances le rm sans le forcer... Parce que confirmer à la main 6000+ suppressions c'est long ^^ '

      Aerya tu parles de l'option --assume-yes ?

      rtorrent-cleaner rm --assume-yes /run/php/.rtorrent.sock

      Sinon tu fais ctrl+ c ou alors j'ai pas compris ta question.

      Le ctrl+C n'ayant pas fonctionné chez moi, j'ai pensé qu'il était opportun d'ajouter un Quit au Yes/No. Mais ça devait venir de la latence entre mon PC et le serveur.

        Aerya oui pourquoi pas c’est pas compliqué à ajouter. Je ferai ça pour la prochaine version. J’attends un peu les retours de tout le monde.

        21 jours plus tard

        🎉 La version 0.9.5 est sortie 🎉

        Cette nouvelle version par rapport à la 0.9.4 améliore quelques points

        • Refactorisation du code pour améliorer les performances
        • Ajout de la commande debug pour m'aider à trouver les bug à l'avenir
        • Ajout de la date à la fin du rapport
        • Ajout de l'option quit pour quitter le script @Aerya
        • Ajout d'un lien sur github pour me soutenir 💰😅

        Pour la commande debug, c'est un outil pour moi. Lorsque vous avez des résultats incohérents avec un torrent, donnez moi le retour de cette commande. Vous pouvez trouver le hash du torrent dans rutorrent (onglet General).

        rtorrent-cleaner debug 127.0.0.1:5000 <hash_du_torrent>

        🎉 La version 0.9.6 est sortie 🎉

        Cette nouvelle version par rapport à la 0.9.5 améliore quelques points

        • Changement du dépôt docker: docker pull magicalex/rtorrent-cleaner
        • Modification de la gestion des erreurs
        • Ajout de la variable d'environnement PHP_TIMEZONE pour avoir la bonne date à la fin du rapport
        • Petit fix de la fonction redownload() pour les torrents avec des fichiers manquants.

        ⚠️ Le dépôt de l'image docker a changé: https://hub.docker.com/r/magicalex/rtorrent-cleaner ⚠️

        docker pull magicalex/rtorrent-cleaner
        docker run -it --rm \
          -e PHP_MEMORY_LIMIT=128M \
          -e PHP_TIMEZONE=Europe/Paris \
          -v /path/to/rutorrent/downloads:/downloads \
          -v /run/php:/run/php \
          magicalex/rtorrent-cleaner:latest report /run/php/.rtorrent.sock

        Maintenant pour chaque version de rtorrent-cleaner il y aura un tag latest, 0.9.6, 0.9.7, etc.

        magicalex/rtorrent-cleaner:latest
        magicalex/rtorrent-cleaner:0.9.6
        4 jours plus tard

        Bonjour,
        Je l'ai installé mais j'ai ce message d'erreur quand je lance ne serait-ce que rtorrent-cleaner -h
        PHP Parse error: syntax error, unexpected '?', expecting variable (T_VARIABLE) in phar:///usr/local/bin/rtorrent-cleaner/vendor/symfony/console/Output/Output.php on line 40
        Je suis sous Debian 9, avec PHP 7
        Vous avez une idée de ce qui ne va pas ?
        Un grand merci !

          Merci beaucoup, fonctionne nickel et rend bien service !!!!

          Magicalex En fait, je n'avais pas installé la bonne version 😉 Marche très bien à présent, et merci !

            StillAlive Ok super, j'ai restauré ton message. Ca va servir à d'autre.

            Si tu repères des erreurs merci de me le faire remonter 😉

            un mois plus tard

            Magicalex
            Wahou, trop rapide, je n'avais pas vu ta réponse, merci milles fois d'avoir fait cette évolution et rapidement en plus.

              Aedonus J'ai fais d'autre amélioration, il y a eu 6 versions depuis.

              Beaucoup de nettoyage de code, amélioration des performances et de simplification à l'utilisation.
              Si tu veux faire un retour d'expérience n'hésite pas à le faire connaitre ici.

                Magicalex
                Merci c'est un gain de temps énorme !
                Ma nouvelle commande préférée :

                rtorrent-cleaner rm --assume-yes -d Partage -l /var/log/rtorrent-cleaner.log 127.0.0.1:5001

                Encore 92Go de gagné ;-)

                5 jours plus tard

                Salut à tous,

                Je vais surement sortir bientôt la version 0.9.7 aucune amélioration significative, juste une mise à jour des components symfony.

                Sinon j'ai fais une petite expérience, pour les utilisateurs de docker il est possible d'utiliser rtorrent-cleaner sans mon image docker mondedie/rtorrent-cleaner (dispo sur le dockerhub).
                Pour cela il faut configurer un peu son image docker qui contient rtorrent. Je vais vous montrer deux exemples ici avec socket et sans socket.

                Premièrement il faut créer un lien symbolique avec votre dossier qui contient les torrents. Prenons l'exemple de l'image linuxserver/rutorrent

                ln -sf /home/username/downloads /downloads

                Ensuite il faut installer rtorrent-cleaner. Exemple sur une debian 10

                apt install php-cli php-xmlrpc php-mbstring
                wget https://github.com/Magicalex/rtorrent-cleaner/raw/master/rtorrent-cleaner-php7.2.phar
                mv -f rtorrent-cleaner-php7.phar /usr/local/bin/rtorrent-cleaner
                chmod +x /usr/local/bin/rtorrent-cleaner

                Pour les images docker qui utilise un socket avec rtorrent

                Vous devez ajouter un volume avant de démarrer votre conteneur.
                Exemple l'image linuxserver/rutorrent

                --volume /run/php:/run/php

                Pour les images docker qui utilise un hostname avec rtorrent

                Vous devez modifier votre fichier .rtorrent.rc

                network.scgi.open_port = 0.0.0.0:5000

                Pour utiliser rtorrent-cleaner

                CONTAINER_IP="$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name)"
                rtorrent-cleaner report "${CONTAINER_IP}:5000"

                C'est important de mettre l'ip 0.0.0.0 pour que rtorrent soit accessible à l'extérieur de votre container.
                Il sera accessible que depuis votre machine.
                Si vous faites un nmap "${CONTAINER_IP}" vous pourrez voir que votre conteneur écoute sur le port 8080 pour le serveur web (nginx) dans la plupart des cas et aussi rtorrent sur le port 5000 dans la plupart des cas.
                En revanche si votre host est configuré sur l'ip 127.0.0.1 ou localhost nmap ne va rien trouver sur le port 5000.

                C'était la petite astuce du jour, l'avantage de cette technique c'est que rtorrent-cleaner s’exécute plus vite puisse qu'on n'a plus besoin de créer un conteneur avec l'image magicalex/rtorrent-cleaner.