Aller au contenu

Script Pour Supprimer Les Thumbs.db


Messages recommandés

hello

il y a plein de fichiers thumbs.db sur mon nas... et ca m'enerve... du coup, je me suis dit que j'allais faire un script que je lancerais via tache planifier regulierement pour me debarraser de ces petites betes.

seulement voila, je voudrais loger tout ca et j'ai un truc que je ne vois pas qui me bloque (j'ai exactemement le meme probleme sur un autre script en plus...)

#!/bin/sh
(

rep="/volume1/NetBackup"
repBck="/volume1/DATA/temp"
LOG_FILE="/volume1/System/System_Logs/delete.thumbs.db.sh.log"

find $rep -iname 'Thumbs.db' -exec mv '{}' $repBck/ ;
) 2>&1 | tee $LOG_FILE

si je met la variable $LOG_FILE, ca ne marche pas, si je met direct le fichier, ca marche.... pourquoi?

Modifié par nexius2
Lien vers le commentaire
Partager sur d’autres sites

mon coté parano, imagine un fichier contient les lettres"thumbs.db"... pouf, je le perd.... dans mon cas, il est juste deplacer....

accessoirement, je peux m'en servire pour deplacer d'autre fichier

le log, c'est par ce que je log tout et qu'en plus, j'ai le meme probleme sur un autre script...

Modifié par nexius2
Lien vers le commentaire
Partager sur d’autres sites

si je met la variable $LOG_FILE, ca ne marche pas, si je met direct le fichier, ca marche.... pourquoi?

Tu définis la variable LOG_FILE *dans* le sous-shell (la partie entre les parenthèses), son contenu est inconnu en dehors du bloc: ( ... )

Ceci devrait mieux marcher:

LOG_FILE=....
(
  ...
)  | tee $LOG_FILE
Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

J'avais même pas jeté un oeuil au contenu du bloc

Pourquoi donc faire des "mv" plutôt que des rm?

En outre, et une approche du style:

find $rep -print0 -iname 'Thumbs.db' | xargs -0 rm 

serait bien plus efficace que des "-exec"

**edit**

Je m'apercois que le "find" de DSM supporte "-delete", donc:

find $rep -iname 'Thumbs.db' -delete

sera encore plus simple et efficace

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

pourquoi des mv... juste par peur de supprimé quelque chose qui porterais un nom similaire. je vais me servir de ce script pour d'autres choses et j'ai pas envie de perdre de données.

Ou mais là tu fait des "mv" de fichiers qui ont tous le même nom vers un répertoire unique, donc tu va quand même perdre des données (sauf le dernier traité)

je vais essayer ton approche... je suppose que le 2ieme $rep est la destination en fait?

Non, c'était une faute de frappe. J'ai corrigé

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

exact! et je me disait que si j'avais un fichier disont, IThumbs.dbo, il ne serais du coup, pas supprimé....sauf qu'en fait, il n'ai meme pas pris en compte.. visiblement, le find prend le fichier (ou dossier) avec cet exact formulation et pas autre chose....

donc je peux faire un -delete :-)

Lien vers le commentaire
Partager sur d’autres sites

bon, ca marche, mis a part que je revient sur mon probleme de log... j'ai en sortie des symboles...

Alors là, c'est d'autant plus étrange qu'en l'état le log devrait être vide!

Quelle est sa taille?

Et sa date de modification est bien l'heure actuelle?

Modifié par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

mais alors je n'ai pas les fichier supprimé dans mon log la.... y'a t'il moyen de loguer tout?

Faut changer d'approche alors puisque ni "find -delete" ni "rm" (celui de dsm en tout cas) ne sait logger ce qui est effacé.

Donc retour à la methode "xargs" qui, lui, dispose de l'option "-t" (trace):

find $rep -iname 'Thumbs.db' -print0 | xargs -0 -t rm 
Lien vers le commentaire
Partager sur d’autres sites

bon.... pas moyen de faire un truc propre... voici ce que j'ai, ca fonctionne... ca ira bien...

#!/bin/sh
LOG_FILE=/volume1/System/System_Logs/delete.thumbs.db.sh.log
rep=/volume1/NetBackup
find $rep -iname 'Thumbs.db' -print | tee $LOG_FILE
find $rep -iname 'Thumbs.db' -delete
Lien vers le commentaire
Partager sur d’autres sites

Tu dois rajouter un -print a la fin de commande find

Non: il y a le "-print0" !

#!/bin/sh
LOG_FILE=/volume1/System/System_Logs/delete.thumbs.db.sh.log
rep=/volume1/NetBackup

find "$rep" -iname 'Thumbs.db' -delete -print >& "$LOG_FILE"

Pas compris à quoi correspond le ">&"

Sinon, dans ce cas autant faire:

exec >"$LOG_FILE" 2>&1

suivi de

find "$rep" -iname 'Thumbs.db' -delete -print

Mais ne pas oublier qu'initialement le "tee" était destiné a dupliquer les traces simultanément à l'écran et dans le fichier .log, ce n'est plus le cas là.

Lien vers le commentaire
Partager sur d’autres sites

ah bas voila... super merci, ca marche nickel ! ;-)

ya moyen de faire une zone d'exeption avec find? je trouve le ! pour exclure un type de fichier, mais si c'est un dossier que je veux exclure? par exemple #recycle ...

la fonction prune marche sur les syno, ca doit donner quelque chose comme ca:

find "$rep" "/volume1/video/#recycle/" -prune -o -iname 'Thumbs.db' -delete -print >& "$LOG_FILE"
Modifié par nexius2
Lien vers le commentaire
Partager sur d’autres sites

Non: il y a le "-print0" !

C'est clair, j'avais pas vu que vous etiez parti sur du xarg ^^

Pas compris à quoi correspond le ">&"

C'est un raccourci : "commande >& fichier.log" est identique a "commande > fichier.log 2>&1"

exec >"$LOG_FILE" 2>&1

Ca a une portee differente (rediriger les stdout et stderr de toutes les instructions du script) mais pour le cas present c'est equivalent.

ya moyen de faire une zone d'exeption avec find? je trouve le ! pour exclure un type de fichier, mais si c'est un dossier que je veux exclure? par exemple #recycle ...

Un truc du genre :

find "$rep" ! -path "*/#recycle/*" -name 'Thumbs.db' -delete -print >& "$LOG_FILE"
Modifié par Fravadona
Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.