Hello, j'arrive peut être après la bataille mais perso j'utilise les Hardlinks aussi pour différentes raisons (utilisation RSS, cakebox et autre téléchargements pour les users). Du coup j'en ai besoin pour pouvoir utiliser correctement mon "système".
Pour ma part j'ai créé un script de suppression des hardlinks par inode lors de la suppression depuis rutorrent.
Donc le script est le suivant :
#!/bin/bash
# Script : hardlink_delete.sh #
# Description : Supprime un fichier ou un dossier à partir de son inode #
# permet donc de supprimer aussi les hardlinks #
# Input : $1 - fichier ou dossier à supprimer #
# #
# Auteur : GorMsoN #
# #
#########################################################################
for inode in $(ls -i "$1" | cut -d" " -f1)
do
#Si l'inode correspond à un sous dossier on relance hardlink_delete (recursif mode engaged)
if [ -d "$(find /home/"$USER" -inum "$inode")" ]
then
/home/$USER/hardlink_delete "$(find /home/"$USER" -inum "$inode")"
#Verification de la bonne suppression du fichier
if [ -d "$(find /home/"$USER" -inum "$inode")" ]
then
{
echo "Date : $(date)"
echo "Type : Erreur de suppression du sous-dossier"
echo "Sous-Dossier : $(find /home/"$USER" -inum "$inode")"
echo "___________________________________________________________________________________"
} >> /home/$USER/.session/Hardlink.log
fi
#Si l'inode correspond à un fichier standard on le supprime de manière classique
else
{
echo "Date : $(date)"
echo "Type : Suppression Inode $inode"
echo "Fichier : $(find /home/"$USER" -inum "$inode")"
} >> /home/$USER/.session/Hardlink.log
find /home/$USER -inum "$inode" -exec rm "{}" \;
#Verification de la bonne suppression du fichier
if [ -f "$1" ]
then
{
echo "Date : $(date)"
echo "Type : Erreur de suppression du fichier"
echo "Fichier : $1"
echo "___________________________________________________________________________________"
} >> /home/$USER/.session/Hardlink.log
fi
fi
done
if [ -d "$1" ]
then
{
echo "Date : $(date)"
echo "Type : Suppression du Dossier"
echo "Dossier : $1"
} >> /home/$USER/.session/Hardlink.log
rmdir "$1"
if [ -d "$1" ]
then
{
echo "Date : $(date)"
echo "Type : Suppression du Dossier"
echo "Dossier : $1"
} >> /home/$USER/.session/Hardlink.log
rmdir "$1"
if [ -d "$1" ]
then
{
echo "Date : $(date)"
echo "Type : Erreur de suppression du dossier"
echo "Dossier : $1"
echo "___________________________________________________________________________________"
} >> /home/$USER/.session/Hardlink.log
fi
fi
printf "_______________________________________________________________________________________\n" >> /home/$USER/.session/Hardlink.log
A adapter évidement suivant tes besoins. Perso je conserve tout dans un log mis en forme. J'ai un script par user dans son /home avec les droits qui vont bien.
Ensuite pour le lancement sur effacement du torrent, ça se passe dans le fichier .rtorrent.rc où il faut ajouter la ligne suivante :
method.set_key=event.download.erased, hardlink_delete,"execute2={/home/gormson/hardlink_delete,$d.base_path=}"
Attention, cette syntaxe est pour la dernière version rtorrent (0.9.8).
Avec ça normalement, lors de la suppression via le bouton supprimé de rutorrent, ça lance le script sur le fichier/dossier associé et ça supprime tout.
J'ai fait ça avec mes connaissances limitées des scripts linux donc c'est très certainement optimisable.
A+