C'est juste qu'à un moment donné par rapport à mon script j'avais des iowait avec l'image de @xataz, enfin je pensais que ca venait de l'image mais au final non. Du coup aujourd hui je suis resté sur celle de linuxserver par habitude mais je pourrais tout aussi bien revenir sur celle de @xataz. Et puis le challenge etait aussi de faire fonctionner rutorrent-cleaner avec l'image linuxserver 😉

Magicalex

[29.10.2019 21:01:40] Lien incorrect avec rTorrent. Vérifiez qu'il soit bien en cours d'exécution. Vérifiez la configuration de $scgi_port et de $scgi_host dans config.php et de scgi_port dans le fichier de configuration de rTorrent.

Bref... Passons.

J'utilise LinuxServer plutôt que Xataz parce qu'à l'époque avec LS j'étais certain que ce serait suivi. Je vais tester avec Xataz.

laster13 Moi c'est le docker ruTorrent qui ne tourne plus dès que je modifie son lancement.

    Aerya le socket est bien présent sur ta machine?

    ls -al /run/php

    Y a pas de raison que cela ne fonctionne pas, je viens de tester sur ma machine avec l'image linuxserver est ça fonctionne 😕

    T'as bien modifié le script rtorrent-cleaner? Lance cette commande.

    docker run -it --rm \
      -v /home/aerya/mnt:/downloads \
      -v /run/php:/run/php \
      magicalex/docker-rtorrent-cleaner report --scgi=/run/php/.rtorrent.rc

    et vérifie les logs de docker-compose

    docker-compose logs -f

    Oui le socket est présent. En revanche ça ne me sert à rien, y'a aucun ruTorrent qui se lance :

    • Celui de Xataz est en train de me chown mes fichiers (et il va lui falloir des années),
    • LinuxServer ne se lance pas, il ne trouve pas le rtorrent.rc alors qu'il est au même endroit, même droits, même contenu.
      Je vais regarder tout ça.

    EDIT : franchement parfois c'est à se demander...j'ai rebooté la machine et LinuxServer tourne au poil. Merci de votre aide dans tous les cas 🙂

    En revanche maintenant j'ai une erreur avec Cleaner (version Docker). J'ai peut-être trop de fichiers à scanner sur le disque ? (~ 8To)

     rtorrent-cleaner • report │
    └───────────────────────────┘
    
     ████████████████████████████ 90%
     remaining time: < 1 sec
     status: recovering the files list from rtorrent...
    PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 4654928 bytes) in phar:///usr/local/bin/rtorrent-cleaner/src/Rtorrent.php on line 33

      Aerya tu peux mettre à jour l'image docker-rtorrent-cleaner et dis moi si tu as tjrs la même erreur.

      T'as combien de torrent à analyser?
      Je pense qu'il va falloir changer memory_limit dans le php.ini tu dépasses de 4mo sur les 128mo autorisé.

      433 Torrents. Pas mieux avec le dernier pull

      ───────────────────────────┐
      │ rtorrent-cleaner - report │
      └───────────────────────────┘
      
       ████████████████████████████ 51%
       ████████████████████████████ 61%
       remaining time: 13 secs
       status: recovering the files list from rtorrent...
      PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/rtorrent-cleaner/src/Rtorrent.php on line 42
      

        🎉 J'ai sorti la version 0.9.3 🎉

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

        • Il y a un tuto dans le readme pour l'image linuxserver/rutorrent ici
        • Le message d'erreur de connexion à rtorrent est plus explicite.
        • Pour l'image docker on peut augmenter la taille de la mémoire limite de php (memory_limit)
        • Quelques modifications de code mineur.

        Aerya Il faut que tu augmentes la mémoire limite de php, je viens de modifier l'image docker pour le faire.

        docker pull magicalex/docker-rtorrent-cleaner:latest
        docker run -it --rm \
          -e PHP_MEMORY_LIMIT=256M \
          -v /home/aerya/mnt:/downloads \
          -v /run/php:/run/php \
          magicalex/docker-rtorrent-cleaner report --scgi=/run/php/.rtorrent.rc

        Merci !!!! @Magicalex 🙂

        Je sais pas si je dois sourire ou pleurer... En tous cas je dois revoir mes scripts !

        Total recoverable space | 1.85 To

          Aerya Dis moi si tu vois des erreurs dans les fichiers manquant et en trop, ça m'intéresse les utilisateurs comme toi qui ont beaucoup de données à traiter.

          Le script s'est exécuté assez rapidement?

          Ça va oui surtout que la machine en question est déjà bien occupée. J'ai pas d'erreur dans les fichiers qui sont à effacer.

             | Total recoverable space        | 1.84 To    |
          +------+---------------------------------------------------------------------------------------------------------+------------+
          
          No missing files.
          
          time: 8min 49sec 343ms, torrents: 439, free space: 3.1 To
          

          Les gens j'ai besoin de votre avis. Les options --scgi= et --port je ne peux pas les rendre obligatoire puisque comme leurs nom l'indique c'est des options... 😅
          Le problème c'est que sans ses options rtorrent-cleaner ne fonctionne, donc elles sont... obligatoire.

          Soit je crée un système de fichier de configuration par exemple ~/.rtorrent-cleaner.yml et on renseigne le hostname scgi/port/socket. Soit on passe tout en argument ou les deux.

          Par exemple

          rtorrent-cleaner report 127.0.0.1 5000 # cette syntaxe je l'a trouve pas très claire...
          rtorrent-cleaner report 127.0.0.1:5000
          rtorrent-cleaner report /run/php/.rtorrent.rc
          rtorrent-cleaner report --config=~/.rtorrent-cleaner.yml

          Voilà, j'aimerai bien avoir votre avis sur la question.

          Autant le passer en arguments, si jamais certains modifient le port voir l'IP (pour du distant).

            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.