This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

ddjaff

Script pour supprimer des fichiers de plus de X jours

Messages recommandés

Bonjour,

J'utilse un NAS DS214Play depuis 2 ans et il répond parfaitement à mon besoin. A tel point que j'ai parfois tendance à oublier qu'il existe puisqu'il fonctionne sans aucun souci.

Neanmoins, je rencontre aujourd'hui un souci lié à mon incompétence en UNIX. Je possède un système domotique (JEDDOM - génial au passage et opensource !) qui prend des photos à partir des caméras de surveillance de la maison. Les photos sont stockées sur le NAS dans le répertoire /volume1/sauvegarde_pc/Jeedom/Video/Cam_Fleur.

Je souhaiterai mettre en place un système de purge automatique du genre suppression des photos ayant plus de 7 jours.

Après quelques recherches, je m'oriente sur le script ultra simple suivant (nommé remove_photo.sh)

#!/bin/sh

find /volume1/sauvegarde_pc/Jeedom/Video/Cam_Fleur -mtime +7 -exec rm {} \;

J'utilise le planificateur de tâche pour le lancer mais nada. Il semble s'executer (bien que je n'en ai pas la preuve) et aucun fichier n'est supprimé.

Pourriez-vous m'aiguiller svp ?

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

le find semble correct sous reserve du path bien entendu

tu peux simplement tester le find en supprimant tout à partir du -exec via putty

faire un script pour une ligne, autant taper la ligne dans le planificateur de tache

autrement, ton fichier .sh, as-tu fait un chmod +x pour le rendre executable ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

je suis complètement novice en matière de script Linux et synology mais ce post semble répondre à mon besoin et pourtant....

Je cherche à faire ce qui est di ci-dessus à savoir prendre l'ensemble des fichiers situés dans un répertoire et les supprimer dans un délai de 15 jours.

Soit un script de type :

find /MonChemin/MonDossier -mtime +15 -delete

directement dans le planificateur de tâche, mais contrairement à ddjaff, moi ça ne fonctionne pas.

J'imagine qu'il doit manquer des choses car on ne stipule même pas le type de fichier, ou alors pas besoin? Mais dans ce cas qu'est-ce qui cloche...

Merci de votre temps

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 12/4/2016 at 16:46, abree a dit :

Soit un script de type :


find /MonChemin/MonDossier -mtime +15 -delete

directement dans le planificateur de tâche, mais contrairement à ddjaff, moi ça ne fonctionne pas.

  • C'est quoi qui ne fonctionne pas, aucun fichier n'est supprimé ou ca provoque une erreur?
  • la tache est-elle bien programmée pour s'exécuter avec un compte qui à bien le droit d'effacer ces fichiers? cIcckta.png
  • Que donne la même commande dans une session shell (ssh ou telnet via putty), en supprimant "-delete"? 
  • essaye d'activer la trace dans le planificateur de tache pour voir les erreurs: OJ6eUp2.png
Le 12/4/2016 at 16:46, abree a dit :

J'imagine qu'il doit manquer des choses car on ne stipule même pas le type de fichier, ou alors pas besoin? 

Par défaut ca efface tous les fichiers situé en dessous de "/MonChemin/MonDossier" quelque soit leur type. 

Explique nous plutôt ce que tu veux faire pour commencer. Pour l'instant ton besoin reste très flou.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Je me permets de mettre le soucis que j'ai à la suite car c'est dans le même genre.

Ceci est fait dans le planificateur de tache (l'utilisateur utilisé a bien tous les droits) et il y a bien plusieurs fichiers qui date de 08 2017

script-J15.jpg.6263f94afe5d4c86d11845cf27d96284.jpg

Voilà le résultat, et bien sûr aucun fichier n'a bougé ... ou est l'erreur ?

Merci d'avance pour l'aide.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour la traduction

enfin de compte c'était juste mon écriture de ".../ftp/... qui devait être en majuscule soit ".../FTP/..."
Si cela peut servir à d'autre ...

Par contre j'ai une autre question maintenant que ca fonctionne.


J'ai des fichiers et des dossiers, il n'y a eu que les fichiers qui ont été supprimés
Une idée pour que les dossiers soit aussi supprimés ?
Merci et bonne journée

Partager ce message


Lien à poster
Partager sur d’autres sites

En France tout le monde ne parle pas anglais pour commencer.

Le message posté répond au problème: le dossier n'existe pas.

Linux est sensible à la casse. /ftp est différent de /FTP.

 

Pour les dossiers, je suggère de faire en 2 étapes:

- première passe sur les fichiers de type fichier :) avec rm

- deuxième passe sur les fichiers de type dossier avec rmdir (pour être certain de supprimer un dossier vide)

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui tu as raison mais j'aurai du passer le traducteur sur la commande ...

Alors merci de me répondre c'est sympa.

Pour les dossiers, bien que je ne connaisse pas la syntaxe de la commande que tu me dis et avant de chercher.

J'ai un soucis c'est que les dossiers en question font référence à une date donc j'ai un dossier par jour et par mois et années donc cela va être compliqué pour faire une commande pour chaque jour.

qu'en penses tu ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Recherche uniquement les fichiers de plus de 15 jours:

find /mon/chemin -type f -mtime +15

Recherche uniquement les répertoires de plus de 15 jours:

find /mon/chemin -type d -mtime +15

Cela permet de s'affranchir de la convention de nommage puisque le critère est une date relative.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

Donc je viens d'essayer tes deux commandes et ça marche à moitié car il me vide bien le répertoire mais ne le supprime pas : 

find /volume1/FTP/CAMERAS/TERRASSE2 -type f -mtime +15 -delete
find /volume1/FTP/CAMERAS/TERRASSE2 -type d -mtime +15 -delete

et par contre je pense savoir pourquoi ... donc tu vas me dire ce que tu en penses :
en regardant les dates des répertoires qu'il a vidé ; elles sont indiquait 'modifié le 13/01/2018' donc cela doit être a cause de cela qu'il ne les supprime pas !!
Y a t'il la même commande mais qui prendrait la date de création au lieu de la date de modification ?

une deuxième info qui n'a rien a voir avec cela c'est que mon histoire de répertoire (dont on avait parlé plus haut) mon répertoire ftp n'est pas en majuscule dans le nas ... étrange ! pourtant il faut que je le mette en majuscule pour que cela fonctionne dans le script.

Merci et bon week end.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Avec find non (mtime pour modification, ctime pour changement du statut, atime pour accès).

Il est de bon usage de faire -ls avant un -delete pour tester et s'assurer que les critères passés à find retournent le résultat escompté.

Pour le répertoire ftp et la casse... ce qui fait foi est la casse sur le système de fichiers (on peut s'en assurer avec un ls en shell interactif), ftp en majuscule doit être une histoire de présentation (lors de la création du partage j'imagine).

Avec capture d'écran cela peut aider pour faire comprendre.

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour du Dimanche,

Merci de me répondre, alors j'ai fais une copie d'écran.

Alors pour tout te dire, j'ai pas trop compris comment faire avec tes explications. Suite à ma copie d'écran ce que j'aimerai maintenant c'est pouvoir effacer automatiquement les dossiers vides dans mon répertoire TERRASSE2.
J'ai mis aussi une copie d'écran du résultat pour la commande (tout est ok)

J'espère que j'ai pas trop été embrouillé ...
Merci d'avance et bon dimanche.

CE1.jpg

CE2.jpg

Partager ce message


Lien à poster
Partager sur d’autres sites

La commande rmdir ne supprimer que les répertoires vides, donc rmdir /volume1/FTP/CAMERAS/TERRASSE2/* devrait faire l'affaire mais c'est pas le plus élégant.

A vérifier que cela se comporte ainsi sur un syno (mais pas de raison).

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonsoir,

Désolé de la réponse tardive.

Merci de ton aide j'ai testé à l'instant .... ça marche ... super, ça réduit le temps pour le vidage des fichiers et dossiers.

J'ai un message d'erreur mais cela est normal car il essaye de vider des dossiers qui sont pas vide... donc c'est normal et tant que cela ne gène pas le fonctionnement du script je pense que c'est bon.

Merci encore et bonne fin de dimanche.

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci à vous, cela m'a bien aidé.

Pour compléter sur la suppression des répertoires, voici ce que j'ai trouvé sur le site ubuntu :

find . -type d -empty -exec rmdir "{}" \;                                

find . -type d -empty -print0 | xargs --null rmdir

rmdir * 2> /dev/null                                                 //2> /dev/null    enleve les messages d'erreurs

Partager ce message


Lien à poster
Partager sur d’autres sites

Je débarque sur ce post qui concerne exactement ce que je cherche à faire, effacer les anciens enregistrements de plus de x jours, que j'enregistre en ftp depuis mes caméras netatmo.

 J'ai un syno ds218 . J'ai testé ce soir tout simplement en rentrant dans planificateur de taches ceci: Mais rien ne se passe et les fichiers n'ont pas bougé, pourquoi ?

J'ai mis dans le champ script: find /volume1/video/netatmo welcome -mtime +60 -delete

Le chemin /volume1/video/netatmo welcome est bon. Mais rien ne se passe, que je mette en root ou sur mon user admin.

 

IMG_0709.HEIC

Modifié par Stephane Lang

Partager ce message


Lien à poster
Partager sur d’autres sites

Il serait bon de mettre un fichier lisible directement depuis le navigateur à des fins de sécurité pour les autres membres 😉

Tu as différents services d'envois d'images comme imgur par exemple.

 

Essaie ça en modifiant la cible du dossier :

find /volume1/dossier -type f -name "*.mkv" -mtime +60 -exec rm {} \; 

 

Modifié par Zeus

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci zeus je vais essayer ça en rentrant du boulot plus tard. Désolé je suis toujours un peu perdu en ce qui concerne l'envoi de pièces jointes ou de photos, ça change un peu selon les forums et chaque fois je galère. Encore pardon. Je vous tiens au courant.

Par contre, mes fichiers vidéos ne sont pas des mkv, ce sont des .mp4.

Apparemment dans le output.log  j'ai une erreur car dans mon nom de dossier y'a un espace. Le nom de mon dossier c'est netatmo welcome. 

Modifié par Stephane Lang

Partager ce message


Lien à poster
Partager sur d’autres sites

ça m’intéresse aussi ce script, pour supprimer des fichiers d’enregistrement périodiques de TV créés par VideoStation.

Je souhaite donc supprimer les fichiers ayant pour extension "ts" présents sous /video/TV

J'ai testé une tâche avec find /Volume1/video/TV -type f - name "*.ts " -mtime +7 -ls

ça ne fonctionne pas : find: unknown predicate `-type'

Une idée ?

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 6 minutes, StéphanH a dit :

J'ai testé une tâche avec find /Volume1/video/TV -type f - name "*.ts " -mtime +7 -ls

ça ne fonctionne pas : find: unknown predicate `-type'

Une idée ?

Je ne serais pas étonné que tu sois tombé sur la même erreur de copier/coller que celle rencontrée ici:

https://www.nas-forum.com/forum/topic/38513-copie-automatique-du-disque-dur-freebox-vers-le-synology/?do=findComment&comment=1319359828

 

Modifié par CoolRaoul

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant