Un script pour effacer les vieux enregistrements Netatmo de votre NAS
Publié le lundi 20 avril 2020 dans la catégorie Maison et DomotiqueDans cet article, je vous explique pas à pas comment configurer un script sur votre NAS Synology afin d'effacer des fichiers qui ont un certain âge. Très pratique pour faire le ménage dans les sauvegardes de vos caméras de surveillance FTP.
Cette technique et les éléments présentés dans l'article ci-dessous m'ont été soufflés par Julien. Un gros merci à lui.
Pourquoi créer des scripts de nettoyage ?
Peut-être avez-vous suivi mon tutoriel pour sauvegarder les vidéos de vos caméras Netatmo sur votre NAS Synology. Si c'est le cas, félicitations, je vous aime bien ! Le seul inconvénient de cette méthode, c'est qu'au bout d'un certain temps, vos vidéos vont prendre une place non négligeable sur le serveur.
Vous aurez donc deux possibilités :
- faire le ménage manuellement par le biais d'un rappel "hey, fais le ménage dans les dossiers Security du NAS.
- rappeler au NAS de faire le ménage pour vous.
C'est cette deuxième méthode que nous choisissons ici, puisque notre temps est précieux. Pour cela, il faudra d'abord rédiger un script très simple dont le rôle sera de supprimer les dossiers et fichiers plus vieux que X jours. Ensuite, créer une tâche planifiée qui exécutera ce script de manière périodique.
Cet article étant la suite du tutoriel lié plus haut, je vous encourage à en prendre connaissance si ce n'est pas déjà fait.
Comment écrire un script de nettoyage ?
Les caméras Netatmo classent les fichiers dans une arborescence très simple, au format "dossier/YYYY/MM/DD/fichier/".
Mon premier script supprime les dossiers qui sont plus vieux que 10 mois :
rm -fr /volume3/Security/NetatmoSecrete1/`date -d "10 month ago" +%Y`/`date -d "10 month ago" +%m`/ rm -fr /volume3/Security/NetatmoSecrete2/`date -d "10 month ago" +%Y`/`date -d "10 month ago" +%m`/ rm -fr /volume3/Security/NetatmoSalon/`date -d "10 month ago" +%Y`/`date -d "10 month ago" +%m`/
Mon deuxième script vient supprimer les dossiers "années" plus anciens que l'année en cours (la date d'exécution de ce script sera très importante) :
rm -fr /volume3/Security/NetatmoSecrete1/`date -d "1 year ago" +%Y`/ rm -fr /volume3/Security/NetatmoSecrete2/`date -d "1 year ago" +%Y`/ rm -fr /volume3/Security/NetatmoSalon/`date -d "1 year ago" +%Y`/
Il vous suffit de copier ces lignes, de les coller dans un fichier texte en les adaptant à votre installation, puis d'enregistrer le tout au format .sh à la racine de votre dossier de sauvegarde, par exemple.
Planifier une tâche d'exécution
La deuxième étape consiste à créer une tâche planifiée qui va exécuter périodiquement vos scripts. Le premier script pour être exécuté chaque début de mois (puisqu'il supprime les dossiers "mois" plus vieux que 10 mois) alors que le deuxième script ne devra être exécuté qu'en fin d'année : dans la mesure où il efface l'année précédente, vous ne pouvez pas l'exécuter en février, sinon vous perdriez votre historique.
Pour commencer, connectez vous à l'interface de votre NAS Synology, et allez dans Control Panel puis Task Scheduler. Sélectionnez Create > Scheduled Task > User-defined script afin de planifier la tâche sur l'exécution du script que nous venons de sauvegarder.
Donnez un nom à votre tâche et choisissez qui sera l'utilisateur qui va l'exécuter. Pour des raisons de sécurité évidentes, j'ai un utilisateur Netatmo qui effectue les sauvegardes. Ce sera donc ce même utilisateur qui les supprimera.
Choisissez ensuite quand vous désirez exécuter cette tâche. Je la configure le 1er de chaque mois, à 1h du matin.
L'écran suivant me permet de configurer une notification par e-mail, et j'aime bien que mon serveur me rappelle qu'il vient de me faire gagner du temps. J'active !
En dessous, saisissez la commande à exécuter. Dans mon cas : bash /volume3/Security/clean_security.sh
Dans ce genre de situation, un petit test ne fait jamais de mal. Le mail étant reçu, on peut donc passer à l'étape d'après : le script annuel.
Il s'agit de la même configuration que pour le script mensuel, sauf qu'on ne l'exécutera qu'une fois par an (en décembre dans mon cas) pour les raisons indiquées plus haut.
C'est aussi "simple" que ça. Je mets des guillemets car il est très facile de recopier des commandes, et il est aussi très simple de se tromper et de faire des bêtises. D'où le fait d'utiliser un utilisateur Netatmo qui n'a le droit de toucher qu'aux dossiers Netatmo, par exemple.
J'espère que cet article vous fera gagner du temps, comme le fait de vous abonner aux nouveaux articles par mail, ci-dessous (un mail par jour maximum, uniquement s'il y a un nouvel article).
Je vous fais des bisous ?
Accéder aux scripts sur GitHub
Encore merci, pour ce retour d'info. Ça va m'être utile dans mon projet de camera Welcome.
Trop fort la miniature avec le Dyson.
Dans l'optique de "nettoyer" j'ai trouvé ça drôle. Pas sur que ce soit évident pour tout le monde 😉
Salut, j'espère que tout roule.
Concernant tes caméras, plus d'achat des Arlo Ultra en vue?
Perso après avoir été fan de Arlo pdt des années et t'en avoir parlé en donnant des infos sur insta, des bugs à répétitions sur mes ultra m'on soulé. Typiquement pas d'enregistrement à certains moments qui me faisait rater des infos dont un mec rodant entre nos caisses, capté via la caméra du voisin.
Bref j'ai tout revendu et repris des Logitech Circle 2 qui me conviennent à 100%, largement moins paramétrable que les Arlo mais elle filme non stop et plus de soucis pour retrouver des séquences que l'on veut.
Bonne aprem, ciao
Salut Mathieu,
J'ai décidé de tester des eufyCam 2C de chez eufy, on verra bien ce que ça donne, mais pour l'instant, j'en suis très content.
Hello Lokan,
Pas mal comme idée, mais c'est optimisable d'après le bon fainéant de sysadmin que je suis ?
En effet, si ton cron ne tourne pas comme prévu, tu es bon pour un intervention manuelle (vu que la prochaine exécution ne supprimera que les fichier du mois-10 pas ceux plus vieux que mois-10)
Pour éviter les erreurs et de se tirer les cheveux sur la date d'exécution, on peut faire ceci.
days=$(( ( $(date '+%s') - $(date -d '10 months ago' '+%s') ) / 86400 ))
find /volume3/Security/Netatmo1 -mtime +$days -delete
find /volume3/Security/Netatmo2 -mtime +$days -delete
find /volume3/Security/Netatmo3 -mtime +$days -delete
(à tester et valider bien sûr)
Exécutable quotidiennement, mensuellement ou de façon hebdomadaire au choix sans risque si ce n'est de recevoir trop de mails.
Coucou,
C'est une trèèèèès bonne idée 😉
Merci !!
Testé et approuvé ?
Hey ! merci à Lokan pour l'idée, et merci à toi pour ton script. J'ai cependant un problème: ça marche bien quand je l'exécute via SSH, par contre par le cron j'ai une erreur (x3) : find: invalid argument `-delete
' to `-mtime'
Que j'utilise le user "root" ou le mien (admin), c'est pareil :/ Une idée ?
Edit: en SSH j'ai remplacé la variable $days par 365, au pire je laisse ça comme ça, quel intérêt de faire un calcul pour avoir ce nombre de jours ?
Edit2: j'ai trouvé! il faut créer le fichier avec vi par exemple en SSH, je l'avais créer avec Notepad++ sur mon paycay et copier/coller dans mon rép "netatmo", mais le format dos ne lui plait pas trop :p si ça peut servir .... Et ok aussi pour le calcul de "days", ça permet de travailler en "mois" sans se prendre la tête a compter le nb de jours; perso je préfère 365j donc pas de pb 🙂
Bonjour et merci pour la vidéo
Quand tu as 1 ou 2 cameras ça peut être utile mais quand tu as 7 caméras (int/ext) avec des enfants, si tu gardes 10 mois d'enregistrement ton NAS va être plein rapidement, même avec 18To
perso j'ai gardé ton tuto ou tu expliques de laisser (100GB pour moi) juste pour les enregistrements et quand les 100GB sont pleins le NAS efface les plus anciens a chaque nouvelle enregistrement, ça me donne 1 mois d'enregistrement en 1080, c'est largement suffisant en cas d'intrusion. @+ et bonne journée