Script de nettoyage d'une seedbox sous Docker

Docker 31 oct. 2019

Appréciant le travail de Magicalex qui a créé un outil de nettoyage de ruTorrent, j’ai eu envie d’aller plus loin pour mes serveurs dans le nettoyage. En effet si utiliser Docker permet de gagner du temps ça laisse en revanche pas mal de fichiers inutiles comme des images ou volumes non utilisés.

J’ai donc intégré son outil (en version Docker) à un script plus complet, qui répond du moins à mes besoins : Nettoyage de rTorrent + log sur Discord via le script de ChaoticWeg et nettoyage des images/volumes/cache de Docker. Comme à mon habitude j’ai ultra commenté le script, je ne me penche pas plus sur les explications.

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.

Créez un script du type /home/aerya/scripts/sbcleaner.sh et le rendre exécutable (chmod +x /home/aerya/scripts/sbcleaner.sh). On peut le placer en CRON pour qu’il s’exécute 1 fois par mois (0 0 1 * * /home/aerya/scripts/sbcleaner.sh)

#!/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

Mots clés