Page 1 sur 1

Script d'effacement du contenu d'un répertoire

Publié : 17 oct. 2019, 10:58
par fredfit
Bonjour à tous,

Je cherche à mettre en place un automatisme qui effacerait le contenu d'un répertoire dès que celui-ci dépasse une certaine capacité.
Est-ce que ceci doit passer par un script ? J'ai tenté par scénario mais je n'ai pas trouvé comment gérer cette notion, si même c'est possible.
Je ne connais rien en script et n'ai aucun talent de développeur. Si une solution existe, je suis preneur !
Merci

PS: le contexte fonctionnel est le suivant: j'utilise le plugin Motion et une webcam USB pour afficher dans mon design la surveillance vidéo en streaming d'une pièce. Le flux est enregistré en tant que fichier mpeg dans html/tmp/motion/un_répertoire_propre_à_Motion.
Je souhaite pouvoir y accéder si nécessaire mais je n'ai pas besoin de cumuler des jours et des jours de capture. D'autant que la taille du fichier augmente vite, ce qui m'a valu récemment un blocage complet de ma Smart par manque d'espace disque. Je voudrais donc que, en arrivant à environ 100Mo de données par exemple, l'automatisme se déclenche.

Re: Script d'effacement du contenu d'un répertoire

Publié : 29 oct. 2019, 16:42
par fredfit
Pas de développeur pour me proposer une solution ?!!

Re: Script d'effacement du contenu d'un répertoire

Publié : 29 oct. 2019, 18:05
par Kyoshi
Hello,
Avec le plugin script + des commandes Linux adaptées pour faire le ménage (que l’on trouve facilement sur Google).
Ou la mise en place d’un cron directement sur le système qui appelle un script.

Re: Script d'effacement du contenu d'un répertoire

Publié : 04 nov. 2019, 08:55
par fredfit
Merci Kyoshi, mais comme je le précisais "Je ne connais rien en script et n'ai aucun talent de développeur".

Re: Script d'effacement du contenu d'un répertoire

Publié : 04 nov. 2019, 12:23
par Kyoshi
Mais cela n'a rien à voir avec le développement.
Ce sont juste des commandes à passer.
Et les tutos ne manquent pas. Il suffit par exemple de saisir dans Google "linux suppression de fichiers par date".

Re: Script d'effacement du contenu d'un répertoire

Publié : 05 nov. 2019, 10:39
par geronimoo0
tu peux faire un script en bash en suivant un tuto sur le net, du genre
if taille > à capacité
then supprimer le contenu du répertoire /mon_rep/

ça va te faire une heure de recherche et compréhension, mais rien d'hyper compliqué :)
ensuite tu appelles ce script soit par un scénario, soit comme indiqué plus haut par une tâche cron.

Re: Script d'effacement du contenu d'un répertoire

Publié : 07 nov. 2019, 11:14
par fredfit
Bon en fait vous m'aidez sans m'aider.
J'ai bien en tête le principe, ce qui me manque c'est la façon de le mettre en œuvre dans Jeedom.

Je pensais utiliser la ligne de commande suivante:

Code : Tout sélectionner

find html/tmp/motion/232 -size +100M -delete;
("232" est le nom du répertoire où se placent mes vidéos)

Maintenant j'en fais quoi ?

Ce code est inspiré de choses que j'ai lues sur:
https://www.nas-forum.com/forum/topic/4 ... e-x-jours/
Mais un NAS Synology a un planificateur de tâches qu'un Jeedom n'a pas (à part un CRON dans un scénario mais ça je sais faire)...

Re: Script d'effacement du contenu d'un répertoire

Publié : 07 nov. 2019, 11:50
par geronimoo0
fredfit a écrit :
07 nov. 2019, 11:14
Bon en fait vous m'aidez sans m'aider.
En fait on t'aide sans faire le taff à ta place, nuance.

Se que tu as trouvé semble pas mal, la commande find sous linux est assez facile à mettre en place.

Maintenant pour mettre en place un automatisme, on va déployer ta commande dans un démon (commande régulière) qu'on appelle cron

pour ça tu fais (en root) crontab -e (pour éditer la crontab journalier)

et tu vas rentrer une ligne du genre:
*/5 * * * * /ma_commande_find

-> pour la syntaxe, ce sont les heures / jours / minutes sur lesquels tu souhaites que la commande soit exécutée; plus d'infos ici:
https://www.linuxtricks.fr/wiki/cron-et ... -de-taches (partie guide de survie)

-> pour la commande tu as deux solutions. Sois tu appelles la commande directement (find html/tmp/motion/232 -size +100M -delete;) ou tu créés un exécutable qui va appeler cette commande (par exemple suppRep.sh qui contiendra la commande find...)

Re: Script d'effacement du contenu d'un répertoire

Publié : 07 nov. 2019, 14:58
par fredfit
geronimoo0 a écrit :
07 nov. 2019, 11:50
En fait on t'aide sans faire le taff à ta place, nuance.
Je tiens à préciser que c'est bien dans cet esprit que je demandais de l'aide.
Seulement, ouvrir une porte quand tu ne sais pas où est la porte, pas facile. Autrement dit, il me manquait le début du commencement du démarrage du ... bref, par où commencer.

A force d'essayer, j'ai mis en place ce que je voulais faire.
Je constate quand même que ce sujet intéresse pas mal de monde: plus de 200 visites. Alors, c'est 200 visites de gens qui savent faire et qui me regardent galérer en ricanant et en ne donnant surtout pas la solution ? Ou c'est celles de ceux qui attendent qu'une solution soit publiée en se disant "tiens ça me serait utile ça" ?!! Pour ces derniers, je détaille ci-dessous comment j'ai fait. Les autres ont le droit de me descendre en flèche si ma méthode est bancale, mais je m'en fous, elle fonctionne ;)

Donc:

- plugin Script: créer un nouveau script. Ici je lui ai donné comme nom d'équipement "Suppression vidéos Motion". Ne rien mettre dans le CRON.
Dans les commandes, j'ai créé la commande "Effacement":
Image


- scénario: créer un nouveau scénario en mode programmé. En programmation, j'ai mis 0 8 * * * pour un déclenchement tous les jours à 8h.
En description du scénario, une simple action qui inclut un bloc Action:
Image

Et roule ma poule !

Merci geronimoo0 de m'avoir mis sur la voie.

Re: Script d'effacement du contenu d'un répertoire

Publié : 12 nov. 2019, 10:10
par geronimoo0
parfait si ça fonctionne, ça servira à d'autres ;)