Si vous utilisez Hubicfuse de façon régulière, vous avez sans doute constaté l’utilisation d’un espace temporaire lorsque vous accédez aux fichiers stockés sur le cloud d’OVH.
Ce petit schéma explique le fonctionnement de cet espace temporaire :
Lorsque vous accédez à un fichier stocké dans le cloud OVH (1) et que, par exemple, vous le copiez sur votre répertoire local, hubicfuse va, avant tout, le copier dans un répertoire temporaire (2) puis une fois entièrement rapatrié depuis le cloud, copier ce fichier dans votre répertoire local (3)
Le mécanisme est identique si vous lisez le contenu d’un fichier (documents, vidéos, mp3) , celui-ci est d’abord copié dans cette espace temporaire avant d’être rendu accessible.
Après cette opération, les fichiers temporaires NE SONT PAS supprimés.
Aussi, si vous ne surveillez pas régulièrement ce répertoire temporaire, vous risquez de remplir votre file system.
La solution est donc de purger le plus souvent possible ce répertoire tout en ne supprimant que les fichiers non utilisés.
Lorsque vous accédez à un fichier stocké dans le cloud OVH (1) et que, par exemple, vous le copiez sur votre répertoire local, hubicfuse va, avant tout, le copier dans un répertoire temporaire (2) puis une fois entièrement rapatrié depuis le cloud, copier ce fichier dans votre répertoire local (3)
Le mécanisme est identique si vous lisez le contenu d’un fichier (documents, vidéos, mp3) , celui-ci est d’abord copié dans cette espace temporaire avant d’être rendu accessible.
Après cette opération, les fichiers temporaires NE SONT PAS supprimés.
Aussi, si vous ne surveillez pas régulièrement ce répertoire temporaire, vous risquez de remplir votre file system.
La solution est donc de purger le plus souvent possible ce répertoire tout en ne supprimant que les fichiers non utilisés.
- La première solution consiste à exécuter de façon régulière une commande find pour supprimer le fichier plus de vieux de X jours, heures ou même minutes en fonction de ce que vous faites avec vos fichiers stockés sur hubic.
- La deuxième solution consiste également à scanner ce répertoire temporaire et à effacer les fichiers qui ne sont plus « locké » par hubicfuse, c’est-à-dire les fichiers arrivés dans leurs répertoires de destinations respectifs.
~/.hubicfuseJ’en profite pour créer deux variables qui seront utilisées dans mon script shell :
HUBIC_USER="root" LOG_FILE="/tmp/hubicfuse_auto_clean.log"Puis, première étape, je scanne le répertoire $temp_dir et enregistre la liste des fichiers trouvés dans un fichier temporaire :
ls -a $temp_dir/.cloudfuse* > /tmp/.auto_clean_file_list 2>/dev/null nb_file=$(cat /tmp/.auto_clean_file_list | wc -l)J’ajoute ces informations dans un fichier de log, toujours utile pour se tenir au courant de l’activité de son script :
DATE=`date +%Y-%m-%d:%H:%M:%S`echo $DATE";"$nb_file" temp file(s)" >> $LOG_FILEMaintenant, je récupère le PID du process hubicfuse :
check_process=$(ps -u $HUBIC_USER -f | grep hubicfuse | grep -v grep | awk '{print $2}' )
Et l'ajoute dans ma log :
DATE=`date +%Y-%m-%d:%H:%M:%S` echo $DATE";Process Hubicfuse : "$check_process >> $LOG_FILELes étapes préliminaires terminées, nous allons « boucler » sur la liste des fichiers trouvées et vérifier si chaque fichier est locké par le process hubicfuse ou non :
for file in $(cat /tmp/.auto_clean_file_list )
do
# Initialisation de la variable de check lsof
return_lsof=""
# On scanne uniquement si le fichier a un nom différent de .. et .
if [[ $file != ".." && $file != "." ]]
then
# On vérifie si le process hubicfus lock le fichier $file
return_lsof=$(lsof -p $check_process | grep $file | awk '{print $1"|"$2"|"$7}')
# Si la variable $return_losf est vide, alors on efface le fichier
if [[ ! "$return_lsof" ]]
then
DATE=`date +%Y-%m-%d:%H:%M:%S`
# On log
echo $DATE";delete "$file >> $LOG_FILE
# On efface
rm -f $file
else
# On "etudie" le contenu de la variable $return_lsof
# contenant les informations relatif au fichier en cours
# Nom du process lockant le fichier
process_lock=$(echo $return_lsof | cut -d '|' -f1)
# ¨Pid du process
pid_lock=$(echo $return_lsof | cut -d '|' -f2)
# Taille du fichier
size_in_progress=$(echo $return_lsof | cut -d '|' -f3)
# On log
echo $process_lock"(pid:"$pid_lock") "$file >> $LOG_FILE
fi
fi
done







