CoolRaoul Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 il y a 13 minutes, MilesTEG1 a dit : il ne faut pas le / Je ne vois pas de quoi tu parles là 🤨 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
FabioDM Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 (modifié) Merci à vous 2 J'ai donc mis ça : find /volume1/tests -type f -mtime +60 -delete /usr/bin/rm -vf {} \; J'ai testé un autre repertoire que videos car j'avais un message d'erreur, mais j'ai de nouveau le même message, même en changeant de répertoire et en donnant les autorisations. Sortie standard/erreur : find: paths must precede expression: /usr/bin/rm Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] Merci pour votre aide 🙂 Edit : J'avais oublié le find et voici le nouveau message d'erreur que j'ai. Merci Modifié le 21 mai 2021 par FabioDM MAJ Erreur 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
MilesTEG1 Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 il y a 29 minutes, CoolRaoul a dit : Je ne vois pas de quoi tu parles là 🤨 Il a écrit bash /find donc bash va vouloir exécuter le fichier find situé à la racine / Et je ne pense pas que l'exécutable find soit à la racine... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 il y a 1 minute, MilesTEG1 a dit : Il a écrit bash /find J'avais meme pas fais gaffe! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
FabioDM Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 (modifié) Je viens de prendre en compte vos corrections et viens donc de tester la ligne ci-dessous bash find/volume1/tests -type f -mtime +60 -delete /usr/bin/rm -vf {} \; J'ai surement encore loupé un truc car voici le message d'erreur que j'ai. Sortie standard/erreur : bash: find/volume1/tests: No such file or directory Merci pour votre aide Modifié le 21 mai 2021 par FabioDM 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
oracle7 Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 @FabioDM Bonjour, Avant toutes choses je t'invite à lire plus attentivement les réponses qui te sont données. Il y a 5 heures, FabioDM a dit : bash find/volume1/tests -type f -mtime +60 -delete /usr/bin/rm -vf {} \; J'ai surement encore loupé un truc car voici le message d'erreur que j'ai. Le "bash" en début de ligne n'est à mettre que SI tu exécutes ta commande dans une tâche programmée (ou non) du gestionnaire de tâches DSM. Par contre, SI tu l'exécutes directement "à la main" dans un terminal sous SSH alors il ne faut pas mettre le "bash" en début de commande. Comme je te l'ai déjà dit précédemment, vérifies la syntaxe et notamment la présence des espaces entre les différentes options AVANT de lancer la commande, ils ne sont pas là pas hasard ni pour faire joli ... Sinon il sera normal que tu reçoives encore des messages d'erreur. Mais c'est toi qui voit ... Par ailleurs, si tu utilises l'option "-delete" de la commande "find" alors il ne faut pas indiquer "/usr/bin/rm -vf". Soit tu fais "find .... -delete" soit tu fais "find .... -exec /usr/bin/rm -vf" mais ne mélanges pas les deux ! De plus un petit tour par la commande "man find" te sera utile pour bien comprendre toutes les options de la commande "find". Donc la commande correcte est : Citation find /volume1/tests -type f -mtime +60 -exec /usr/bin/rm -vf {} \; OU find /volume1/tests -type f -mtime +60 -delete {} \; Cordialement oracle7😉 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
MilesTEG1 Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 @oracle7 Les deux commandes que tu viens de donner, donnent le même résultats, mais y-en a-t-il une à privilégier ? La question qu'il avait posé n'est pas bête 🙂 Et je voudrais bien une réponse moi aussi 😉 Une s'exécute-t-elle plus vite ? Une est-elle plus sûre ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 (modifié) Il y a 1 heure, oracle7 a dit : la commande correcte est : find /volume1/tests -type f -mtime +60 -delete {} \; Non, pas de "{} \;" apres "-delete" (c'est aussi pourquoi j'ai dis que c'était plus concis) Il y a 1 heure, oracle7 a dit : Le "bash" en début de ligne n'est à mettre que SI tu exécutes ta commande dans une tâche programmée (ou non) du gestionnaire de tâches DSM. Je n'ai jamais eu à faire ça et la preuve est que ça échoue Ci dessous résultat d'une tache avec pour contenu "bash find <arguments non destructifs ici>": Cher utilisateur, Le planificateur de tâches à terminé une tâche planifiée. Tâche : testusertask Heure de début : Fri, 21 May 2021 17:28:09 GMT Heure d’arrêt : Fri, 21 May 2021 17:28:10 GMT État actuel : 126 (Interrompu) Sortie standard/erreur : /bin/find: /bin/find: cannot execute binary file Modifié le 21 mai 2021 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
FabioDM Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 Merci pour tes explications @oracle7, je pensais avoir fais le max pour lire en détail vos réponses mais je suis surement passé à côté ou mal compris ce qu'on a voulu m'expliquer. Bref, en tout cas, la c'est très clair et fonctionne parfaitement. En attendant de comprendre la différence entre delete et vf, je reste sur vf. Merci à tous pour le temps que vous avez pris pour m'expliquer 🙂 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kramlech Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 (modifié) Le 20/05/2021 à 07:34, MilesTEG1 a dit : Le 20/05/2021 à 07:28, CoolRaoul a dit : Je ne comprends pas ce qui fait dire que "-exec /usr/bin/rm -f {} \;" serait plus efficace que "-delete." Au contraire la première forme lance un process pour chaque suppression alors que l'autre n'en lance aucun (c'est built-in dans find). Même si j'imagine que l'impact reste minime bien entendu. Ha je savais pas que le find avant un flag -delete... Du coup je suis curieux de savoir s'il y a une différence entre les méthodes et une préférence à avoir. @MilesTEG1 : tu n'avais pas ta réponse, là ? Modifié le 21 mai 2021 par Kramlech 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
oracle7 Posté(e) le 21 mai 2021 Partager Posté(e) le 21 mai 2021 (modifié) @MilesTEG1, @FabioDM, @CoolRaoul Bonjour, Certes la version "-delete" est plus concise (oups pour le "{} \;" de trop à la fin : mauvais C/C 🥴),mais je préfère personnellement la version "longue" avec "rm" car elle permet un mode verbose plus sécure au moment de supprimer effectivement les fichiers. Sauf erreur de ma part, le mode verbose de la commande "find" avec l'option "-ok" fait juste une demande de confirmation au lancement de la commande, ce qui me parait insuffisant. Voilà la différence, enfin ce que j'en ai compris ... PS : Pour l'exécution dans une tache programmée, effectivement cela ne marche pas en direct. Dans mon élan j'ai été trop rapide dans mon explication il fallait mettre la commande dans un shell script exécutable par ex : "fichier.sh" et la tâche exécute ce script avec "bash fichier.sh". Merci @CoolRaoul pour le rappel 🙂 Cordialement oracle7😉 Modifié le 21 mai 2021 par oracle7 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 1 juin 2021 Partager Posté(e) le 1 juin 2021 (modifié) Le 21/05/2021 à 20:18, oracle7 a dit : je préfère personnellement la version "longue" avec "rm" car elle permet un mode verbose plus sécure au moment de supprimer effectivement les fichiers. Dans ce cas on peut utiliser cette approche aussi (au passage je ne suis pas sur de comprendre le "plus secure" ) find <bla bla> -print -delete le "-print" aura pour effet d'ajouter la verbosité souhaitée en traçant les fichiers destinés à être supprimés par la clause suivante, "-delete". Et, si on insiste à utiliser "rm", plutôt privilégier ceci alors: find <bla bla> -print0 | xargs -0 rm -v au moins il n'y aura pas un process forké pour chaque fichier supprimé (meme si je reconnais qu'on est loin d'un possible problème de perf, j'ai juste tendance à être parfois inutilement perfectionniste) Modifié le 1 juin 2021 par CoolRaoul 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
db77 Posté(e) le 6 mars 2023 Partager Posté(e) le 6 mars 2023 (modifié) Bonjour, Je voudrais faire la même chose que la plupart d'entre vous, supprimer tous les fichiers qui ont plus de X jours. J'ai saisi la commande dans le planificateur de tâche directement et, sans le paramètre -time +X tout fonctionne bien, tout est supprimé, fichiers et dossiers. Mais en ajoutant le paramètre, plus rien n'est supprimé. Je m'interroge donc sur ce paramètre 🤔 Si j'ai bien compris : -mtime +30 : date de modification supérieure à 30 jours Moi, ce serait la date de création est-ce bien la même chose ? Merci PS : sachant que le dossier IPCAM contient un dossier par caméra, du nom de la caméra, qui contient lui deux sous-dossiers "snap" et "record" Commande qui supprime bien tout : find /volume1/IPCAM -mindepth 2 -maxdepth 2 -execdir rm -rf {} + Commande qui ne supprime rien : find /volume1/IPCAM -mindepth 2 -maxdepth 2 -mtime +30 -execdir rm -rf {} + Modifié le 6 mars 2023 par db77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
oracle7 Posté(e) le 6 mars 2023 Partager Posté(e) le 6 mars 2023 @db77 Bonjour, Il y a 2 heures, db77 a dit : -mtime +30 : date de modification supérieure à 30 jours Moi, ce serait la date de création est-ce bien la même chose ? Sauf erreur de ma part, c'est la même chose, de toutes façon le man de "find" pour l'option "-mtime" stipule "File's data was last modified less than, more than or exactly n*24 hours ago." Par ailleurs, pour l'exécution dans une tache programmée, vu que la commande ne marche pas en direct, il te faut mettre la commande dans un shell script exécutable par ex : "fichier.sh" et la tâche exécutera ce script avec "bash fichier.sh". Pour la commande, je te propose de corriger par ceci : find /volume1/IPCAM \( -type f -o -type d \) -mindepth 2 -maxdepth 2 -mtime +30 -execdir /usr/bin/rm -rf {} \; Attention à la dangerosité du "rm -rf" mieux vaut un "rm -vf", mainenant ce que j'en dis, c'est toi qui voit ... Teste la aussi quand même dans un terminal sous SSH avant de la mettre dans une tâche programmée ! Cordialement oracle7😉 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
oracle7 Posté(e) le 6 mars 2023 Partager Posté(e) le 6 mars 2023 @bliz Bonjour, il y a 6 minutes, bliz a dit : il me semble qu'il faut remplacer "mtime" par "ctime" pour la suppression soit sur la date de création des fichiers Bah, j'en suis pas sûr du tout quand je lis le man de "find" : Je n'associe pas forcément le statut du fichier "changed" à "created" car quand le fichier est créé on ne peux pas dire que son statut à changé vu qu'il n'avait pas de statut auparavant, non ? ... C'est ma logique (discutable certes ...) . C'est vrai que "status changed" pour "-ctime" et "data modified" pour "-mtime" sont aussi deux choses différentes. Cordialement oracle7😉 2 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
db77 Posté(e) le 6 mars 2023 Partager Posté(e) le 6 mars 2023 (modifié) Bonsoir et merci de m'avoir répondu. Mais étant donné que je ne connais pas du tout Linux, et pas vraiment DSM, j'ai cherché comment passer en mode "ligne de commande" comme sous Windows depuis l'interface web de mon NAS mais n'ai rien trouvé. Cela m'aurait permis de tester les différentes commandes, avant de les intégrer dans un fichier .sh. Mais je ne sais même pas comment écrire un fichier.sh je suppose qu'il me faut un éditeur de texte mais lequel. Merci de m'aiguiller sur cela afin que j'avance un peu. Je vais essayer avec le ctime plutôt que le mtime au cas où... EDIT : sinon, seul l'ajout de -mtime +30 empêche ma ligne de commande de fonctionner. Du coup, pourquoi changer execdir comme tu me le proposes @oracle7 vu qu'il fonctionne sans le -mtime ? Quelle est la différence entre -rf et -vf (question d'un ignorant Linux) ? Je pense que (-type f -o -type d) veut dire fichier ou directory... Modifié le 6 mars 2023 par db77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
db77 Posté(e) le 6 mars 2023 Partager Posté(e) le 6 mars 2023 (modifié) il y a 22 minutes, bliz a dit : l'éditeur de texte de windows devrait suffire, le bloc note, une fois la commande enregistré, il suffit de renomer le fichier.txt en fichier.sh Oui, c'est clair, je vais essayer... mais sans la suppression pour voir. EDIT : j'ai essayé mais rien... 1 - fichier "menage.sh" contenant : find /volume1/IPCAM \( -type f -o -type d \) -mindepth 2 -maxdepth 2 -mtime +1 2 - ligne dans tâche : bash /volume1/dossier/menage.sh 3 - output.log : vide 😒 EDIT2 : apparemment la combinaison des -type ne lui plaît pas car il me liste tous les répertoires et aucun fichier. Je vais essayer avec -type f uniquement Il ne me sort que ça : /volume1/IPCAM/#recycle/desktop.ini alors que j'ai une image du 17 juin 2021 dans /volume1/IPCAM/FI9821P_C4D6553DF61C/snap/IMG_20210617_190122.jpg EDIT 3 : -maxdepth 3 et ça sort !!! Je progresse EDIT 4 : RÉSOLU !!! Un grand merci pour votre aide. Voici la ligne : find /volume1/IPCAM \( -type f -o -type d \) -mindepth 3 -maxdepth 3 -mtime +30 -execdir /usr/bin/rm -rf {} \; En fait c'était juste un problème de profondeur dans l'exploration des sous-dossiers. Bizarre quand même que l'ajout du paramètre -mtime +30 ait suffi à ne plus faire fonctionner mon script. Bref, cela m'a permis d'apprendre des trucs et MERCI Modifié le 6 mars 2023 par db77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
oracle7 Posté(e) le 6 mars 2023 Partager Posté(e) le 6 mars 2023 (modifié) @db77 Bonjour, Pour l'éditeur de texte, je m'orienterais plutot vers notepad afin de généter des fichiers texte en UTF8 pour ne pas introduire d'éventuelles erreurs d'interprétation par le shell Linux, car (pour faire simple) le bloc note windows conserve des caractères "cachés" propres à windows que le shell Linux n'aime pas..; Pour accèder au mode "ligne de commandes" avec DSM, le mieux est d'accèder via un termimal avec le logiciel PuTTY ou avec mieux WinSCP qui lui présente l'avantage de naviguer facilement dans l'arborescence du système de DSM. Je te renvoie à ce TUTO pour établir une connexion root en SSH au système DSM (v6 ou v7) : TUTO : Accés SSH et ROOT via DSM6 Pour démarrer voici un récapitulatif des principales commandes shell Linux : https://buzut.net/101-commandes-indispensables-sous-linux/ Pour les script shell bash regardes aussi ceci : https://abs.traduc.org/abs-fr/index.html L'option -r de rm est la récursivité (supprime les dossiers et tout leur contenu). L'option -v est le mode verbose (bavard = trace toutes les opérations). L'option -f est le mode force qui ignore les fichiers/arguments non existants et n'affiche rien. il y a 38 minutes, db77 a dit : pourquoi changer execdir comme tu me le proposes Je ne change rien, je remets correctement la syntaxe de l'option "-execdir" soit " -execdir /usr/bin/rm (rf {} \; " par rapport à la tienne qui est incomplète. Ni plus ni moins ... Astuce : Pour avertir un membre de ta réponse, tu tapes dans ton message "@" + les premiers caractères de son pseudo. Dans le popup qui apparaît tu cliques alors sur le pseudo recherché et il s'affiche sur fond bleu dans ton texte. Ainsi ton interlocuteur est informé/notifié de ta réponse sinon il ne voit rien sauf à rebalayer en arrière tous les messages (ce que peu de monde fait). Cordialement oracle7😉 Modifié le 6 mars 2023 par oracle7 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
db77 Posté(e) le 6 mars 2023 Partager Posté(e) le 6 mars 2023 (modifié) Un grand MERCI à toi @oracle7 je vais prendre un peu de temps et regarder tout ça. J'ai bien suivi le tuto pour se connecter avec PuTTY ou WinSCP. Je vais lire les tutos sur les commandes et modifier ma tâche en fonction de tes remarques. Encore merci à toi @oracle7 Modifié le 7 mars 2023 par db77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.