rtorrent-cleaner un outil pour libérer de la place sur votre seedbox !
- Modifié
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.
- Modifié
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 ^^ '
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.
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>
- Modifié
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
- Modifié
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
- Modifié
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.
Donc à ajouter à ton Docker ruTorrent ? Avec un CRON ? ^ ^
- Modifié
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