1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| # liste des fichiers horodates pour la purge
recherche_file=$(find "${pathDistantVersioning}" -type f | grep "${expReg}" | sort -r)
for filePathHorodate in ${recherche_file}; do
# conserver horodatage du fichier
longueur=$(echo $filePathHorodate | awk '{print length($0)}')
longueur=$(($longueur - 14))
Horodate=$(echo $filePathHorodate | cut -c ${longueur}-)
#date du fichier que l'on recupere
vAnnee=$(echo "${Horodate}" | cut -c 1-4)
vMois=$(echo "${Horodate}" | cut -c 5-6)
vJour=$(echo "${Horodate}" | cut -c 7-8)
vHeure=$(echo "${Horodate}" | cut -c 10-11)
vMinute=$(echo "${Horodate}" | cut -c 12-13)
vSeconde=$(echo "${Horodate}" | cut -c 14-15)
vdateDossier="${vAnnee}-${vMois}-${vJour} ${vHeure}:${vMinute}:${vSeconde}"
#date du fichier en secondes
t1=`date --date="${vdateDossier}" +%s`
#date du jour en secondes
t2=`date --date="${dateJour}" +%s`
# Difference entre les 2 dates en secondes
let "tDiff=$t2-$t1"
# puis en jours
let "tDiff=$tDiff/3600/24"
# si le fichier est trop ancien, suppression
if [ $tDiff -gt $nbRetention ]; then
#rm -f "${filePathHorodate}"
if [ $? -eq 0 ]; then
Fct_Log "[INFO] Purge par date de ${filePathHorodate}" "${ficLog}"
res1=$(($res1 + 1))
else
Fct_Log "[ERREUR] Purge par date de ${filePathHorodate} IMPOSSIBLE" "${ficLog}"
resultat=$(($resultat + 1))
fi
fi
# conserver le nom fichier (suppression chemin et horodatage)
longueur=$(echo $filePathHorodate | awk '{print length($0)}')
longueur=$(($longueur - 16))
filePATH=$(basename $(echo $filePathHorodate | cut -c 1-${longueur}))
# Chemin du fichier
dir=$(dirname "${filePathHorodate}")
# nombre d'iteration du fichier au sein de la meme arborescence
nb=$(find ${dir} -maxdepth 1 -name "*${filePATH}_*" | wc -l)
# si le nombre d'iteration est suprieur la limite
if [ $nb -gt $nbVersion ]; then
val=1
# recherche de tous les fichiers de meme nom au sein d'une meme arborescence
liste=$(find ${dir} -maxdepth 1 -name "*${filePATH}*" | cat $1 | sort -r)
for i in ${liste}; do
if [ $val -gt $nbVersion ]; then
#rm -f "${i}"
if [ $? -eq 0 ]; then
Fct_Log "[INFO] Purge par version de ${i}" "${ficLog}"
res2=$(($res2 + 1))
else
Fct_Log "[ERREUR] Purge par version de ${i} IMPOSSIBLE" "${ficLog}"
resultat=$(($resultat + 1))
fi
fi
val=$(($val + 1))
done
fi
# Si le dossier est vide, suppression
if [ $(find "${dir}" -type f | wc -l) -eq 0 ]; then
#rm -rf "${dir}"
if [ $? -eq 0 ] ; then
Fct_Log "[INFO] Suppression du dossier vide ${dir}" "${ficLog}"
res3=$(($res3 + 1))
else
Fct_Log "[ERREUR] Suppression du dossier vide ${dir} IMPOSSIBLE" "${ficLog}"
resultat=$(($resultat + 1))
fi
fi
done |
Partager