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.

              Aerya Alors je sais pas si c'est une bonne idée. De pus il est facile d'utiliser rtorrent-cleaner quand votre rtorrent est sous docker avec mon image docker magicalex/rtorrent-cleaner.

              Ou alors juste installer rtorrent-cleaner mais sans cron?
              docker exec -it rutorrent rtorrent-cleaner report

              Au passage j'ai fais des grosses modifications sur l'image mondedie/rutorrent voir ici