Inspiré par le travail de Magicalex, j'ai concocté un script plus global de nettoyage : https://upandclear.org/2019/10/31/script-de-nettoyage-dune-seedbox-sous-docker/

Par défaut ce script est passé avec la commande "Report" pour rTorrent-Cleaner, il ne fait donc que lister les fichiers locaux non liés à rTorrent. Pour les effacer il faut remplacer "Report" par "rm" ou "rm -y" pour forcer l'effacement automatiquement et ne pas avoir à les confirmer un par un.

#!/usr/bin/env bash


# Nom du script .. : sbcleaner.sh
# Date ........... : 10.2019
# Auteur ......... : Aerya | upandclear.org
# Description .... : Script de nettoyage d'une seedbox utilisant Docker avec rapport sur Discord
# ................ : Supprime tout ce qui est inutilise dans Images/Volumes/Builder (cache)
# ................ : Integre le travail de Magicalex (https://github.com/Magicalex/rtorrent-cleaner | https://mondedie.fr/d/10037-rtorrent-cleaner-un-script-pour-liberer-de-la-place-sur-votre-seedbox-!) pour supprimer localement tout fichier non lie a un .torrent dans rTorrent (Docker LinuxServer)
# ................ : Utilise le script de notification sur Discord de ChaoticWeg (https://github.com/ChaoticWeg/discord.sh)
# Prerequis ...... : Seedbox sous Docker, se creer un WebHook Discord (https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks) et installer les prérequis de Discord.sh (sudo apt-get install curl jq bats -y)
# Spécificités ... : 
# ... Docker ..... : Ne touche pas aux containers
# ... BitTorrent.. : Pour utilisation avec le container Docker ruTorrent de LinuxServer (https://hub.docker.com/r/linuxserver/rutorrent). Voir https://github.com/Magicalex/rtorrent-cleaner#example-with-the-docker-image-linuxserverrutorrent
# Fonctionnement . : Modifier les variables et placer en CRON (root) pour exécution toutes les X semaines, exemple 0 0 1 * * /home/aerya/scripts/sbcleaner.sh


# Variables ...... : A definir ici et ne pas modifier la suite du script
# RUTORRENT ...... : Nom de votre container ruTorrent LinuxServer
# SLEEP .......... : Temps de pause du script (minutes), pour laisser le temps au container ruTorrent de se relancer dans le but d'eviter toute erreur avec l'outil de nettoyage
# FILES .......... : Chemin de montage de /downloads, a adapter selon votre configuration du container Docker ruTorrent de LinuxServer
# CLEANER ........ : Option de rTorrent-Cleaner, report = tester, rm = effacer. Pour d'autres variables se rapprocher du howto de rTorrent-Cleaner sur GitHub
# LOG ............ : Fichier de log de la commande precedente
# WEBHOOK ........ : Cle d'acces privee a votre salon Discord (https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks)
# BOT ............ : Nom du bot Discord qui affichera le log de rTorrent-Cleaner
# MESSSAGE ....... : Message d'accompagnement

RUTORRENT='rutorrent'
SLEEP='3'
FILES='/home/aerya/mnt'
CLEANER='report'
LOG='rtorrent-cleaner.log'
WEBHOOK='https://discordapp.com/api/webhooks/xxx'
BOT='CleanerStorage'
MESSAGE='Nettoyage de rTorrent terminé sur Storage'


# Script ......... : NE PAS MODIFIER
# ................ : Suppression des volumes, images, builders Docker non utilises
docker volume prune -f
docker image prune -f
docker builder prune -f

# ................ : Redemarrage du container ruTorrent pour etre certain de l'efficacite de l'outil de nettoyage
docker restart "$RUTORRENT"

# ................ : Pause
sleep "$SLEEP"m

# ................ : Script Magicalex rTorrent-Cleaner - Format Docker
docker run -it --rm \
-e PHP_MEMORY_LIMIT=256M \
-v "$FILES":/downloads \
-v /run/php:/run/php \
magicalex/rtorrent-cleaner report --quiet --log=/downloads/"$LOG" /run/php/.rtorrent.sock

echo "Log généré le $(date "+%d.%m.%Y à %T")" | tee -a /downloads/"$LOG"

# ................ : Script ChaoticWeg Discord.sh
wget -P /tmp https://raw.githubusercontent.com/ChaoticWeg/discord.sh/master/discord.sh
chmod +x /tmp/discord.sh
bash /tmp/discord.sh \
--webhook-url="$WEBHOOK" \
--file "$FILES"/"$LOG" \
--username "$BOT" \
--text "$MESSAGE"

# ................ : Suppression des fichiers
rm /tmp/discord.sh
rm "$FILES"/"$LOG"
docker rmi magicalex/rtorrent-cleaner

    Moi je mettrai pas apt install curl jq bats -y dans le script. ça doit faire partie des prérequis je pense comme docker.

    Au début du script il est conseillé d'utiliser plutôt #!/usr/bin/env bash
    Et pour rtorrent-cleaner tu peux rajouter l'option --quiet aussi.

    docker run -it --rm \
      -e PHP_MEMORY_LIMIT=256M \
      -v "$FILES":/downloads \
      -v /run/php:/run/php \
      magicalex/docker-rtorrent-cleaner report --log=/downloads/"$LOG" --scgi=/run/php/.rtorrent.sock --quiet

    C'est peut-être utile de rajouter la date à la fin de l’exécution de rtorrent-cleaner?
    > time: 1sec 383ms, torrents: 6, free space: 501.03 Go, date: 12:49 31/10/2019

      Le apt install c'est pour le script discord.sh, d'où le fait que je les place directement dedans. Sinon le --quiet ne risque pas de rendre caduque le log de rTorrent-Cleaner ?
      J'ajoute la date et l'heure en effet, c'est mieux.

        Magicalex Moi je mettrai pas apt install curl jq bats -y dans le script. ça doit faire partie des prérequis je pense comme docker.

        Le fait d'installer des pré-requis dans un script ne me choque pas. Par contre:

        • Il vaut mieux utiliser apt-get qu'apt dans un script (apt-get est plus bas-niveau qu'apt qui offre surtout des raccourcis et active des options visuelles, donc inutiles dans un script.)
        • Peut-être peux-tu proposer le choix d'installer les pré-requis à l'utilisateur via un read:
          tst_cmd(){
          case "$1" in
          0) echo -e "\e[92mDone \e[0m" ;;
          2) echo -e "\e[93mWARNING \e[0m" ;;
          1|*) echo -e "\e[91mERROR \e[0m\n\nReturn error message is:\n$2" > /dev/stderr
          exit 1 ;;
          esac
          }
          
          if ! dpkg -s curl | grep installed > /dev/null 2>&1; then
            echo "curl not isntalled, do you want to install it ? (y/n)"
            read ans
            if [ "$ans" == "y" ]; then
              printf '%-63s %-4s' "- Installing curl pre-requiresites" "..."
              { ko_msg="$( { \
                apt-get -y install curl \
                > /dev/null; } 2>&1 1>&3 3>&- )"; } 3>&1;
              tst_cmd "$?" "$ko_msg"
            fi
          fi
          ça parait un peut compliqué, mais le résultat est propre : s'il y a une erreur lors de l'install, ça l'affiche directement et sort du script.
          Mettre le test en fonction permet d'économiser du code s'il y a plusieurs pré-requis à installer.

        Aerya Sinon le --quiet ne risque pas de rendre caduque le log de rTorrent-Cleaner ?

        Non les logs seront quand même écrit dans le fichier si tu demandes l'option --log

        Script MàJ :

        • #!/usr/bin/env bash
        • Prérequis de discord.sh passés dans les commentaires avec apt-get
        • Option --quiet pour rTorrent-Cleaner
        • Ajout date/heure au log

          Aerya du coup avec la nouvelle version 0.9.4 la bonne commande c'est ça.

          docker run -it --rm \
            -e PHP_MEMORY_LIMIT=256M \
            -v "$FILES":/downloads \
            -v /run/php:/run/php \
            magicalex/docker-rtorrent-cleaner report --quiet --log=/downloads/"$LOG" /run/php/.rtorrent.sock

          docker image prune -a ne serait-il pas plus sûr ?

          Le -f permet de se passer de confirmation si pour une raison ou une autre une image Docker était bloqués dans une commande. Enfin je l'ai vu comme ça.

          Mais tu ne risques pas de perdre les images des containers simplement stoppés ?

            spider1163 Normalement je crois que si un container est créé même si il est stoppé on ne peut pas supprimer l'image. Même en forçant (à vérifier)

              Magicalex C'est ça, si l'image est "utilisée" elle n'est alors pas retirée.

              Aerya
              docker volume prune -f
              docker image prune -f
              docker builder prune -f

              Je réalise... Pourquoi pas simplement un docker system prune -a ?

              Aerya c'est mieux si je rajoute la date à la fin du rapport de rtorrent-cleaner?

              > time: 1sec 201ms, torrents: 5, free space: 468.35 Go, date: Fri, 08 Nov 2019 13:35:07 +0100 ?

              Répondre…