Bonjour,
J'ai trouvé cette idée superbe, j'ai donc repris la base du script , l'ai amélioré (moins de find et de parcours de l'arborescente des dossiers) et adapté à mes besoins.
Mon script permet de :
-supprimer les thumbs.db, desktop.ini et .DS_Store de votre synology.
-détecte les fichiers qui n'ont pas leur place dans votre dossier de musiques et votre dossier de photos.
-et vous envoies un rapport e-mail
Encore merci à Johell pour cette idée !
#!/bin/sh
#################################################################
# Constantes du script #
# /!\ NE PAS MODIFIER /!\ #
#################################################################
DATE=$(date '+%Y%m%d')
EMAIL_NOT_SENT_FILE="/root/dead.letter"
EMAIL_CONTENT_FILE="/tmp/$(date +%s)-message"
# Contient des listes temporaires de fichiers
TMPFILE="/tmp/$(date +%s)-list"
#################################################################
# Options du script #
# A MODIFIER EN FONCTION DE VOTRE CONFIGURATION #
#################################################################
# Chemin complet contenant tous les sous-dossiers a examiner
DATADIR="/volume1/"
# Chemin complet du dossier contenant les musiques
MUSICDIR="/volume1/music/"
# Expression reguliaire qui definie les fichies mautorises dans le dossier MUSICDIR (insensible ‡ la casse)
MUSICREGEX=".*\(mp3\|flac\|ogg\|wav\|wma\|m3u\|jpg\|png\)"
# Chemin complet du dossier contenant les photos
PHOTODIR="/volume1/photo/"
# Expression reguliaire qui definie les fichies autorises dans le dossier PHOTODIR (insensible ‡ la casse)
PHOTOREGEX=".*\(jpg\|png\|bmp\|nef\|raw\|arw\|avi\|mp4\|mov\|3gp\|mpg\|flv\)"
# Chemin complet du dossier o˘ sauvegarder le log
# /!\ Le nettoyage des anciens logs aurra lieu dans ce dossier et
# tous les fichiers avec l'extension ".log" seront concernes /!\
LOGDIR="/volume1/logs/scripts/"
# Nom du fichier de log sauvegarde dans LOGDIR
LOGNAME=maintenance-$DATE
# Nombre de jours de retention pour les logs dans LOGDIR
LOGRETENTION=30
# Adresse e-mail recevant le rapport
EMAILADDRESS=xxxx@xxxx.xxx
#################################################################
# Constantes apres definitions des options #
# /!\ NE PAS MODIFIER /!\ #
#################################################################
LOGFILE=${LOGDIR}${LOGNAME}".log"
#################################################################
# Purge les anciens logs et mails non envoyes #
#################################################################
rm -f ${EMAIL_NOT_SENT_FILE}
# Supprime les logs datant de plus d'un mois
find ${LOGDIR} -name '*.log' -mtime +${LOGRETENTION} -exec rm {} \;
#################################################################
# En-tÍte du fichier de log #
# ICI VOUS POUVEZ AJOUTER UNE EN-TETE AU FICHIER DE LOG #
#################################################################
cat > ${LOGFILE} <<EOF
EOF
#################################################################
# Purge des fichiers inutiles crees par Windows et Mac OS X #
# Thumbs.db (Win) & Desktop.ini (Win) & .DS_Store (OS X) #
# Exclus les dossiers systemes de Synology aquota.group, #
# aquota.user, ceux commencant par @ et NetBackup #
#################################################################
find "${DATADIR}" \( -path "${DATADIR}aquota.group" -o -path "${DATADIR}aquota.user" -o -path "${DATADIR}@*" -o -path "${DATADIR}NetBackup" \) -prune -o -type f \( -iname "thumbs.db" -o -iname "desktop.ini" -o -name ".DS_Store" \) -fprint "${TMPFILE}" -exec rm {} \;
PURGE_COUNT=$(cat ${TMPFILE} | wc -l)
cat >> ${LOGFILE} <<EOF
Fichiers systeme inutiles supprimes (Thumbs.db, Desktop.ini, .DS_Store) : ${PURGE_COUNT}
-------------------------------------------------------------------
$(cat ${TMPFILE})
EOF
#################################################################
# Analyse du dossier des musiques #
#################################################################
find "${MUSICDIR}" -iregex "${MUSICREGEX}" -prune -o -type f -fprint "${TMPFILE}"
NON_MUSIC_COUNT=$(cat ${TMPFILE} | wc -l)
cat >> ${LOGFILE} <<EOF
Fichiers non musicaux dans ${MUSICDIR} (non supprimes par le script) : ${NON_MUSIC_COUNT}
-------------------------------------------------------------------
$(cat ${TMPFILE})
EOF
#################################################################
# Analyse du dossier des photos #
#################################################################
# On exclus le dossier @eaDir qui est utilise par Synology pour les miniatures et videos compressees
find "${PHOTODIR}" \( -iregex "${PHOTOREGEX}" -o -type d -name "@eaDir" \) -prune -o -type f -fprint "${TMPFILE}"
NON_PHOTO_COUNT=$(cat ${TMPFILE} | wc -l)
cat >> ${LOGFILE} <<EOF
Fichiers n etant pas des photos dans ${PHOTODIR} (non supprimes par le script) : ${NON_PHOTO_COUNT}
-------------------------------------------------------------------
$(cat ${TMPFILE})
EOF
#################################################################
# Pied du fichier de log #
# ICI VOUS POUVEZ AJOUTER UNE FIN AU FICHIER DE LOG #
#################################################################
cat >> ${LOGFILE} <<EOF
EOF
#################################################################
# Envoi du fichier log par e-mail #
#################################################################
ERR=0
SUBJECT="Rapport du script"
#Composition de contenu de l'e-mail
cat > ${EMAIL_CONTENT_FILE} <<EOF
Bonjour,
Ci-joint le rapport detaile de l execution du script et un resume de l operation
Maintenance:
Fichiers systeme inutiles supprimes (Thumbs.db, Desktop.ini, .DS_Store) : ${PURGE_COUNT}
Fichiers non musicaux dans ${MUSICDIR} (non supprimes par le script) : ${NON_MUSIC_COUNT}
Fichiers n etant pas des photos dans ${PHOTODIR} (non supprimes par le script) : ${NON_PHOTO_COUNT}
Cordialement,
EOF
cat ${EMAIL_CONTENT_FILE} | nail -s "${SUBJECT}" -a ${LOGFILE} ${EMAILADDRESS}
sleep 3
while [ -f ${EMAIL_NOT_SENT_FILE} ]; do
if [ ${ERR} -le 2 ]; then
echo Envoi du message impossible - nouvelle tentative dans 1 minute
sleep 60
rm ${EMAIL_NOT_SENT_FILE}
echo Nouvelle tentative en cours
cat ${EMAIL_CONTENT_FILE} | nail -s "${SUBJECT}" -a ${LOGFILE} ${EMAILADDRESS}
sleep 10
ERR=$(($ERR +1 ))
else
rm "/root/dead.letter"
echo Envoi de mail abandonne suite a $((${ERR} +1)) tentatives infructueuses
fi
done
rm ${EMAIL_CONTENT_FILE}
#################################################################
# Suppression des fichiers temporaires #
#################################################################
rm ${TMPFILE}