Hello
J'ai remarqué (comme d'autres) que Download Station gardait tout ce qui est en partage (seed) dans un folder caché au lieu d'utiliser ce que l'on a dans le dossier de download.
Ce qui fait que l'on se retrouve avec le double des données utilisées sur le disque.... Seul avantage on peut faire ce que l'on veut de ce qu'il y a dans le dossier de download vu qu'il ne sert pas Download station, mais est ce que cela vaut la place utilisée?
Pour moi non, donc j'ai entrepris de faire quelques tests pour comprendre le fonctionnement de Download station
Les fichiers/dossiers
Tout se trouve sous le volume configuré pour les fichiers temporaires sous un dossier nommé "@download" qui n'est visible qu'en se mettant en root via un ssh.
Il est configuré dans las paramètres de Download Station
Sous ce dossier "@download" vous trouvez des dossiers avec un simple nombre comme nom
Chaque dossier correspond à l'ID d'un téléchargement. Cet ID est lié à une base de données que je parlerais plus tard
Dans chacun de ses dossiers vous trouvez un fichier .torrent qui est le torrent correspondant à ce téléchargement (tracker compris), un fichier .resume qui contient les données utilisées pour la vérification du téléchargement (état, taille... et plein de choses incompréhensibles) et un fichier .filelist qui contient les fichiers à telecharger et s'ils sont dans un dossier.
Et bien sur le fichier ou dossier qui a été telechargé (elle est la la place perdue), si celui ci n'existe pas, pas de partage, le téléchargement n'est plus considéré comme complet.
L'espace à gagner se trouve dans chacun de ces dossiers
Il y a aussi un fichier de log (transmissiond.log, tient c'est étrange) qui contient le log des erreurs.
La base de données
Elle est au format PostgreSQL egt n'est pas accessible par defaut, il faut faire quelques modifs que l'on trouve sur le net pour y acceder.
Elle contient les téléchargement, leur nom, statuts, taille...., dans mon cas, la seule utilité est de faire correspondre les ID et les noms de dossier, mais sinon vous trouverez l'info dans le fichier .filelist (plus long mais sans besoin de faire de modifs du systeme)
Gagner de l'espace disque
On arrive à notre but, après un simple test avec des symlinks, Download station n'y voit que du feu, par contre il faut le faire manuellement pour chaque dossier en le faisant pointer vers celui du repertoire download.
C'est long et pas très pratique, donc voila un premier jet de script pour faire ça :
Attention : Avant de lancer le script il faut être sur que tous les téléchargements sont terminés ou ils seront perdus. Il faut aussi mettre en pause tout le contenu de download station afin qu'il relance ses vérifications de fichier a sa remise en marche, sinon tout passera en erreur ou il n'y aura plus aucun upload
#!/bin/bash
function checklink {
#look download folder to find destination
mdest=$(find /volume1/Download/ -name "$1")
echo $mdest
if [ -z "$mdest" ]; then echo "$1"; echo "$2"; read -n1 -r -p "Press any key to continue..." key
else
echo "traitement"
rm -R "$2/$mdown"
rm -R $2/*.resume
ln -s "$mdest" "$2/$1"
fi
}
cd /volume1/\@download
#get list of listfile in download station
liste=$(find ./ -name "*.filelist")
#cut result to get first occurency
mfile=$(echo $liste | cut -d " " -f1)
i=1
#loop until end of list
until [ -z $mfile ]; do
#get downloaded file name or folder
mdown=$(tail -n 3 $mfile |grep name|cut -d':' -f1- |awk -F'"' '{print $4}')
mcurdir=$(dirname $mfile)
#check if symlink exists
mlink=$(readlink "$mcurdir/$mdown")
if [ -z "$mlink" ]; then checklink "$mdown" "$mcurdir"; fi
#read -n1 -r -p "Press any key to continue..." key
let i=i+1
mfile=$(echo $liste | cut -d " " -f$i)
done
Il n'est pas parfait dans le sens ou je n'ai pas géré les caractères réservés (genre [] ) et que les fichiers avec des accents donnent des résultats étranges vu que Download station et Linux ne sont pas dans le même format (c'est hyper logique)
Le script va vérifier chaque dossier du répertoire @download pour voir si le contenu téléchargé est situé ici ou ailleurs via un symlink.
Dans le cas ou le contenu est local, il va lire le fichier .filelist pour extraire le nom du dossier/fichier et le rechercher dans le répertoire download. Une fois identifié, il supprime le contenu local et crée le lien.
Dans le cas ou il ne trouve pas les données dans le dossier download, le script se met en pause en affichant ou il y a eu un soucis
Le coté positif :
on gagne pas mal d'espace
on peut ranger dans des sous dossier sans soucis (genre mettre une série dans un dossier commun)
Le coté négatif :
Il faut faire revérifier chaque téléchargement par Download Station (c'est long la premiere fois, apres ca reste jouable)
Le script ne doit pas être utilisé pendant un téléchargement ou il faudra reprendre le téléchargement à 0
Le fait de ne pas prendre les caractere spéciaux et les accents gene mais dans mon cas c'etait 3 fichiers sur 170... donc assez faible
Vu que c'est deja fonctionnel pourquoi Synology ne le fait pas par défaut ?
Je vais me pencher sur cette histoire de caractères non gérés, en tous cas je confirme que l'upload fonctionne toujours
Bonne journée
Edit1 : Correction du script pour des erreurs de gestion d'espaces dans les noms