Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1588 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script de nettoyage

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Script de nettoyage

n°676570
gwadboy
Posté le 12-05-2005 à 11:54:45  profilanswer
 

Bonjour,
 
Le script en question droit effacer tous les fichiers *.dfb et les répertoires dans le répertoire DigiFilm qui sont plus vieux de 1 jour.
Effacer tous les fichiers *.BEL, *.inflight et les répertoires dans les répertoires 7,9,10,11,13,15,20,30,40 et 50 qui sont plus vieux de 1 jour.
 
Je voudrais peaufiner le script de nettoyage pour le rendre moins long et plus sure.
J’ai trouvé pour l’instant que /* pour effacer tous les répertoires.
 
Bientôt le nombre de répertoire à nettoyer sera de 0 à 99 et dans c'est même répertoire de 0 à 99.
Il faudra que j’exclue des répertoires etc… Mais je galère pour le finir.
 
Merci d’avance.
 
#!/bin/sh
# Le 20/04/2005
# Script de nettoyage
 
cd /home/DigiFilm/
for i in `find /home/DigiFilm/ -type f -cmin +1440 -name "*.dfb"` ; do rm $i ; done ;
for i in `find /home/DigiFilm/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/7/
for i in `find /home/pvd/7/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/7/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/7/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/9/
for i in `find /home/pvd/9/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/9/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/9/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/10/
for i in `find /home/pvd/10/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/10/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/10/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/11/
for i in `find /home/pvd/11/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/11/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/11/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/13/
for i in `find /home/pvd/13/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/13/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/13/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/15/
for i in `find /home/pvd/15/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/15/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/15/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/20/
for i in `find /home/pvd/20/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/20/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/20/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/30/
for i in `find /home/pvd/30/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/30/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/30/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/40/
for i in `find /home/pvd/40/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/40/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/40/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
cd /home/pvd/50/
for i in `find /home/pvd/50/ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/50/ -type f -cmin +1440 -name "*.inflight"` ; do rm $i ; done ;
for i in `find /home/pvd/50/* -type d -cmin +1440` ; do rm -rf $i ; done ;
 
Merci d’avance.

mood
Publicité
Posté le 12-05-2005 à 11:54:45  profilanswer
 

n°676574
jlighty
Posté le 12-05-2005 à 12:01:23  profilanswer
 

plusieurs choses à faire :
- différencier les noms des répertoires qui ne sont pas effaceables de ceux dont les fichiers peut être supprimées.
ex: no_del_xxxxx comme nom à un répertoire à garder
ainsi il sera plus aisé de détecter les répertoires à analyser
- j'espère que tes fichiers ne comportent pas d'espaces
faire une moulinette qui transforme les espaces en underscores
- si il peut avoir plusieurs niveaux d'arborescence dans les dossiers alors je suggère de passer à un algorithme récursif


Message édité par jlighty le 12-05-2005 à 12:02:01
n°676581
gwadboy
Posté le 12-05-2005 à 12:20:01  profilanswer
 

Arborescence répertoire DigiFilm
/home/DigiFilm/
Dans DigiFilm tous les répertoires et les fichiers de plus de 1 jour sont à effacer.
 
Arborescence répertoire pvd
/home/pvd/
/home/pvd/7/
/home/pvd/9/
/home/pvd/10/
/home/pvd/11/
/home/pvd/13/
/home/pvd/15/
/home/pvd/20/
/home/pvd/30/
/home/pvd/40/
/home/pvd/50/
Dans pvd tous les répertoires et les fichiers de plus de 1 jour sont à effacer dans les répertoires 7,9,10,11,13,15,20,30,40 et 50.
 
Les fichiers ne comportent pas d'espaces.
 
Un algorithme récursif ???
L’option –r avec FIND ?
 
Merci

n°676584
jlighty
Posté le 12-05-2005 à 12:34:42  profilanswer
 

je suppose que dans /home/pvd et /home/DigiFilm il y a des dossiers ou fichiers utilisateurs (.bashrc ou .kde,...)
alors ce que je propose :
- renommer les dossiers à analyser analys_***
- faire un ls |fgrep "analys" pour récupérer les répertoires à analyser puis à l'aide d'une boucle For, faire des appels à find

n°676587
gwadboy
Posté le 12-05-2005 à 12:44:58  profilanswer
 

pvd et DigiFilm ne sont pas des répertoires utilisateurs.
Ce sont des répertoires crée par moi, et sont partager par Samba.
 
Si j’ai bien comprit le mieux est de faire find rechercher à la racine de pvd, les fichiers et les répertoires a effaces, et d’exclure les répertoires a ne pas effaces ?
 
Merci  

n°676595
jlighty
Posté le 12-05-2005 à 13:03:31  profilanswer
 

si il n'y a pas de possibilité de renommer les répertoires alors je propose un script de ce type :
 
rep_a_analyser="7 9 10 11 13 15 20 30 40";
for rep in "$rep_a_analyser"; do
cd "/home/pvd/$rep"
for i in `find ./ -type f -cmin +1440 -name "*.BEL"` ; do rm $i ; done ;  
done;
 

n°676610
gwadboy
Posté le 12-05-2005 à 13:22:44  profilanswer
 

Pour les recherches et les suppressions des fichiers  en .BEL et .inflight j’ai modifié avec ton exemple les lignes suivantes.
 
Avant :
 
cd /home/pvd/7/
for i in `find /home/pvd/7/ -type f -atime +1 -name "*.BEL"` ; do rm $i ; done ;
for i in `find /home/pvd/7/ -type f -atime +1 -name "*.inflight"` ; do rm $i ; done ;
 
 
Après :
 
rep_a_analyser=7 9 10 11 13 15 20 30 40 50" ;
for rep in "$rep_a_analyser" ; do
cd "/home/pvd/$rep"
for i in `find ./ -type f -atime +1 -name "*.BEL" "*.inflight"` ; do rm $i ; done ;
done ;
 
Pour les recherches et les suppressions des répertoires j’ai modifié avec ton exemple les lignes suivantes.
 
Avant :
 
for i in `find /home/pvd/7/* -type d -atime +1` ; do rm -rf $i ; done ;
 
Après :
 
rep_a_analyser=7 9 10 11 13 15 20 30 40 50" ;
for rep in "$rep_a_analyser" ; do
cd "/home/pvd/$rep"
for i in `find ./ -type d -atime +1` ; do rm $i ; done ;
done ;
 
Merci pour l’aide encore.
 
Le script est pour un serveur en production.
J’ai une machine pour faire les testes, mais je galère depuis sa création.
J’ai un deuxième script à faire pour une machine qui comporte de milliers de fichiers.
Alors si avec quelque ligne je peux résoudre le problème, bin je suis preneur.
 
J’avance petit à petit.

n°676614
gwadboy
Posté le 12-05-2005 à 13:35:52  profilanswer
 

Petit problème :
 
bris@scenux:~/prod$ ./script_de_nettoyage.sh
./script_de_nettoyage.sh: line 16: cd: /home/bris/prod/pvd/7 9 10 11 13 15 20 30 40 50: Aucun fichier ou répertoire de ce type
find: les chemins doivent précéder l'expression
Usage: find [CHEMIN] [EXPRESSION]
 
J'ai lancer ce bout de script :
 
rep_a_analyser="7 9 10 11 13 15 20 30 40 50" ;
for rep in "$rep_a_analyser" ; do
cd "/home/bris/prod/pvd/$rep"
for i in `find ./ -type f -cmin +1 -name "*.BEL" "*.inflight"` ; do rm $i ; done ;
done ;

n°676615
gwadboy
Posté le 12-05-2005 à 13:38:07  profilanswer
 

La ligne 16 correspond à :
 
cd "/home/bris/prod/pvd/$rep"

n°676617
jlighty
Posté le 12-05-2005 à 13:41:17  profilanswer
 

remplace
for rep in "$rep_a_analyser"; do  
par :
for rep in `echo "$rep_a_analyser"`; do  

mood
Publicité
Posté le 12-05-2005 à 13:41:17  profilanswer
 

n°676685
gwadboy
Posté le 12-05-2005 à 16:36:45  profilanswer
 

;)  
 
Enfin je passe la premier étape.
 
rep_a_analyser="7 9 10 11 13 15 20 30 40 50" ;
for rep in `echo "$rep_a_analyser"` ; do
cd "/home/bris/prod/pvd/$rep"
for i in `find ./ -type f -cmin +1 -name "*.BEL"` ; do rm $i ; done ;
for i in `find ./ -type f -cmin +1 -name "*.inflight"` ; do rm $i ; done ;
for i in `find ./ -type d -cmin +1` ; do rm -rf $i ; done ;
done ;
 
Je continue de faire des éssais.
 
Merci jlighty
 
Je ne pense pas que j'ai fini.

n°676689
jlighty
Posté le 12-05-2005 à 16:43:27  profilanswer
 

surtout pour un script effacant des fichiers sur une machine de production il ne faut pas hésiter de le tester à fond

n°676695
gwadboy
Posté le 12-05-2005 à 16:56:14  profilanswer
 

Voici le script complet.
 
# Bloc 1
rep_a_analyser="7 9 10 11 13 15 20 30 40 50" ;
for rep in `echo "$rep_a_analyser"` ; do
cd "/home/bris/prod/pvd/$rep"
for i in `find ./ -type f -cmin +1 -name "*.BEL"` ; do rm $i ; done ;
for i in `find ./ -type f -cmin +1 -name "*.inflight"` ; do rm $i ; done ;
for i in `find ./ -type d -cmin +1` ; do rm -rf $i ; done ;
done ;
 
#Bloc 2
cd /home/DigiFilm/
for i in `find /home/bris/prod/DigiFilm/ -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
for i in `find /home/bris/prod/DigiFilm/* -type d -cmin +1` ; do rm -rf $i ; done ;
 
Cette ligne avec """for i in `find /home/bris/prod/DigiFilm/* -type d -cmin +1` ; do rm -rf $i ; done ;""" le * pour effaces tous les répertoire y'a pas un équivalent plus propre ?
 
Et aussi le script n'execute pas les trois for dans le bloc 1.
 
 

n°676700
gwadboy
Posté le 12-05-2005 à 17:09:46  profilanswer
 

Petit erreur de ma par le bloc 1 fonctionne correctement.
 
Mais le * pour effaces tous les répertoires dans DigiFilm me :(

n°676701
jlighty
Posté le 12-05-2005 à 17:11:19  profilanswer
 

normalement on n'a pas besoin de *, avec "find /home/bris/prod/DigiFilm -type d" on récupère tous les dossiers

n°676721
gwadboy
Posté le 12-05-2005 à 17:37:56  profilanswer
 

Dans l’avenir sa va bien m’aider à faire des scripts et des petits programme.
Mais pour trouver comment faire les scripts, c’est avec la pratique ou c’est dans des livres etc… ?
 

Code :
  1. rep_a_analyser="7 9 10 11 13 15 20 30 40 50" ;
  2. for rep in `echo "$rep_a_analyser"` ; do
  3. cd "/home/bris/prod/pvd/$rep"
  4. for i in `find ./ -type f -cmin +1 -name "*.BEL"` ; do rm $i ; done ;
  5. for i in `find ./ -type f -cmin +1 -name "*.inflight"` ; do rm $i ; done ;
  6. for i in `find ./ -type d -cmin +1` ; do rm -rf $i ; done ;
  7. done ;
  8. cd /home/DigiFilm/
  9. for i in `find /home/bris/prod/DigiFilm -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
  10. for i in `find /home/bris/prod/DigiFilm -type d -cmin +1` ; do rm -rf $i ; done ;


 
Je copie les fichiers et les répertoires sur mon poste en local pour faire des essais.
Je ne veux pas effaces tous les jobs à cause d’une erreur dans le script.
Je pense que sur ce point jlighty ta raison.  
 
Oula il y a des milliers de fichiers et répertoire à copies.
 
 :ouch:


Message édité par gwadboy le 12-05-2005 à 21:24:03
n°676728
jlighty
Posté le 12-05-2005 à 17:45:13  profilanswer
 

J'ai déjà eu à faire un script de purge automatique des fichiers, un conseil remplace tous tes rm -f par des "echo rm -f $i" puis tu rediriges l'affichage du script dans un fichier


Message édité par jlighty le 12-05-2005 à 18:02:29
n°676743
gwadboy
Posté le 12-05-2005 à 18:00:59  profilanswer
 

:pt1cable:  
 
Je vais tenter de faire ce que tu ma conseille.
 

Code :
  1. rep_a_analyser="7 9 10 11 13 15 20 30 40 50" ;
  2. for rep in `echo "$rep_a_analyser"` ; do
  3. cd "/home/bris/prod/pvd/$rep"
  4. for i in `find ./ -type f -cmin +1 -name "*.BEL"` ; do rm $i ; done ;
  5. for i in `find ./ -type f -cmin +1 -name "*.inflight"` ; do rm $i ; done ;
  6. for i in `find ./ -type d -cmin +1` ; do echo rm -f $i ; done ;
  7. done ;
  8. cd /home/bris/prod/DigiFilm/
  9. for i in `find /home/bris/prod/DigiFilm -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
  10. for i in `find /home/bris/prod/DigiFilm -type d -cmin +1` ; do echo rm -f $i ; done ;


 
Pour le remplacement de tous les rm -f par des "echo rm -f $i" la modification dont j'ai faite est bonne ?
 
Petit détail quand je demande au script d'efface tous les répertoires dans DigiFilm sans le * il efface aussi le répertoire DigiFilm.
J'ai sa aussi comme erreur :
rm: ne peut détruire le répertoire `./': Argument invalide


Message édité par gwadboy le 12-05-2005 à 18:02:30
n°676750
jlighty
Posté le 12-05-2005 à 18:04:31  profilanswer
 

attention TOUS tes rm $i
donc lignes 4,5,6,10,11
do echo rm -f $i -> do echo "rm -f $i"

n°676759
jlighty
Posté le 12-05-2005 à 18:13:58  profilanswer
 

concernant

Citation :

Petit détail quand je demande au script d'efface tous les répertoires dans DigiFilm sans le * il efface aussi le répertoire DigiFilm.


comme find affiche en premier "./" (don DigiFilm) il suffit de faire :

Citation :

`find /home/bris/prod/DigiFilm -type d -cmin +1 | tail +2 `

n°676769
gwadboy
Posté le 12-05-2005 à 18:20:27  profilanswer
 

Merci tu m'aide beaucoup  ;)  
 

Code :
  1. rep_a_analyser="7 9 10 11 13 15 20 30 40 50" ;
  2. for rep in `echo "$rep_a_analyser"` ; do cd "/home/bris/prod/pvd/$rep"
  3. for i in `find ./ -type f -cmin +1 -name "*.BEL"` ; do echo "rm $i" ; done ;
  4. for i in `find ./ -type f -cmin +1 -name "*.inflight"` ; do echo "rm $i" ; done ;
  5. for i in `find ./ -type d -cmin +1` ; do echo "rm -f $i" ; done ;
  6. done ;
  7. cd /home/bris/prod/DigiFilm/
  8. for i in `find /home/bris/prod/DigiFilm -type f -cmin +1 -name "*.dfb"` ; do echo "rm $i" ; done ;
  9. for i in `find /home/bris/prod/DigiFilm -type d -cmin +1` ; do echo "rm -f $i" ; done ;


 
Avec les :
do echo "rm -f $i"
ou
do echo "rm $i"
 
il me montre sur la console les fichiers à effaces mais ne me les effaces pas.  :ouch:

n°676771
jlighty
Posté le 12-05-2005 à 18:22:21  profilanswer
 

ben c'est le but ?
c'est pour éviter les bugs de script. Après chaque exécution du script, regarde les fichiers qui seraient supprimés. Dès que tu es sûr du script alors tu supprimes les echos


Message édité par jlighty le 12-05-2005 à 21:29:12
n°676772
gwadboy
Posté le 12-05-2005 à 18:26:48  profilanswer
 

A ok  :jap:

n°676787
gwadboy
Posté le 12-05-2005 à 18:51:28  profilanswer
 

Merci
 
Demain je vais finir le reste.
 
Pour réglé :
rm: ne peut détruire le répertoire `./': Argument invalide  
Avec :
| tail +2  
 
 ;)

n°676800
jlighty
Posté le 12-05-2005 à 18:57:52  profilanswer
 

l'explication réside dans le fait que "find" affiche dès la première ligne "./" donc si on prend en compte l'affichage qu'à partir de la deuxième ligne (| tail +2) -> plus de "./"

n°676911
gwadboy
Posté le 12-05-2005 à 21:22:34  profilanswer
 

Demain je vais faire les modif.
 
Le (| tail +2) est a mettre dans tous les (find ./) ?

n°676921
jlighty
Posté le 12-05-2005 à 21:28:51  profilanswer
 

non puisque ./ est un dossier donc il faut mettre "| tail +2" uniquement aux endroits où l'on a "find ...... -type d"


Message édité par jlighty le 12-05-2005 à 21:37:36
n°676927
gwadboy
Posté le 12-05-2005 à 21:36:17  profilanswer
 

ok  :jap:  
 
Pour reproduire les multiples fichiers et répertoires du taf chez moi, c'est  :??:  
 
Merci pour l'info.
 
Par contre pour le 2eme script sa sera plus facile, parceque les répertoires sont en grands nombres.
 
100x100x100
 
 :pt1cable:


Message édité par gwadboy le 12-05-2005 à 21:38:01
n°676931
jlighty
Posté le 12-05-2005 à 21:41:59  profilanswer
 

plusieurs manières :
soit tu rappatries les fichiers du boulot chez toi (je sais pas si c'est légal)
soit tu utilises le couple mkdir / touch pour créer des fichiers et des répertoires
ex:

Code :
  1. mkdir 10
  2. cd 10
  3. fin="0";
  4. while [ "$fin" = "0" ]; do
  5.   touch "$i.BEL";
  6.   if [ "$i" = "100" ]; then
  7.     fin="1";
  8.   fi
  9. i=`expr "$i" + 1 `;
  10. done;


Edit :encore des bugs  :D


Message édité par jlighty le 12-05-2005 à 21:55:53
n°676936
gwadboy
Posté le 12-05-2005 à 21:54:47  profilanswer
 

:jap:  
 
Et bin y'a solution a tous.
 
Moi qui me suis fait chié à crée des répertoire, mais je suis pas allé jusqu'a 1000000.
 
Merci bien  :jap:

n°677131
gwadboy
Posté le 13-05-2005 à 09:50:45  profilanswer
 

J’ai un problème avec le bloc DigiFilm.
Sur ma Debian ou j’essais le script  tous fonctionne bien.
 

Code :
  1. cd /home/bris/prod/DigiFilm/
  2. for i in `find /home/bris/prod/DigiFilm -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
  3. for i in `find /home/bris/prod/DigiFilm -type d -cmin +1` ; do rm -rf $i ; done ;


 
Mais les machines de production sont sur des SuSE version 9.x.
Et le script efface le répertoire racine DigiFilm.
 

Code :
  1. cd /home/DigiFilm/
  2. for i in `find /home/DigiFilm -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
  3. for i in `find /home/DigiFilm -type d -cmin +1` ; do rm -rf $i ; done ;


Message édité par gwadboy le 13-05-2005 à 09:52:35
n°677133
jlighty
Posté le 13-05-2005 à 09:52:18  profilanswer
 


Alors il faudrait que tu tapes :
"find ./ | more" et régarde les premières lignes

Citation :


for i in `find /home/bris/prod/DigiFilm -type d -cmin +1` ; do rm -rf $i ; done ;


où il est "| tail +2" ?  :D


Message édité par jlighty le 13-05-2005 à 09:53:27
n°677139
gwadboy
Posté le 13-05-2005 à 09:57:33  profilanswer
 

J'ai fait la modif sur le script de test et de prod.
 
Prod :
 

Code :
  1. cd /home/DigiFilm/
  2. for i in `find ./ -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
  3. for i in `find ./ -type d -cmin +1 | tail +2` ; do rm -rf $i ; done ;


 
Test :
 

Code :
  1. cd /home/bris/prod/DigiFilm/
  2. for i in `find ./ -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
  3. for i in `find ./ -type d -cmin +1 | tail +2` ; do rm -rf $i ; done ;


 
Je test.

n°677143
gwadboy
Posté le 13-05-2005 à 10:04:46  profilanswer
 

Le script fonctionne sans effacer le répertoire DigiFilm, merci jlighty.
 
Mais je voudrais savoir pourquoi le script effacé le répertoire avant ?
 
Voilà maintenant le script fini je pense.
 

Code :
  1. rep_a_analyser="7 9 10 11 13 15 20 30 40 50" ;
  2. for rep in `echo "$rep_a_analyser"` ; do cd "/home/bris/prod/pvd/$rep"
  3. for i in `find ./ -type f -cmin +1 -name "*.BEL"` ; do rm $i ; done ;
  4. for i in `find ./ -type f -cmin +1 -name "*.inflight"` ; do rm $i ; done ;
  5. for i in `find ./ -type d -cmin +1 | tail +2` ; do rm -rf $i ; done ;
  6. done ;
  7. cd /home/bris/prod/DigiFilm/
  8. for i in `find ./ -type f -cmin +1 -name "*.dfb"` ; do rm $i ; done ;
  9. for i in `find ./ -type d -cmin +1 | tail +2` ; do rm -rf $i ; done ;


Message édité par gwadboy le 13-05-2005 à 10:05:31
n°677158
gwadboy
Posté le 13-05-2005 à 10:47:21  profilanswer
 

Je lance le script par cron, tous les jours.
Un petit chmod +x script_de_nettoyage pour le rendre exécutable.
Le script est placer dans /etc/cron.daily/ et effaces les fichiers et les répertoires de plus de trois jours.
Mais on ma demande d’exclure le samedi et le lundi.
Pour exclure le samedi et le lundi il y a une option avec find ou je jongle avec le cron ?

n°677160
jlighty
Posté le 13-05-2005 à 10:53:29  profilanswer
 

Citation :

Mais je voudrais savoir pourquoi le script effacé le répertoire avant ?


Citation :

l'explication réside dans le fait que "find" affiche dès la première ligne "./" donc si on prend en compte l'affichage qu'à partir de la deuxième ligne (| tail +2) -> plus de "./"


 
tu as meilleur temps de configurer cron


Message édité par jlighty le 13-05-2005 à 10:53:39
n°677161
gwadboy
Posté le 13-05-2005 à 10:57:43  profilanswer
 

Je n'ai pas pige ce que tu voulais me dire ?

n°677162
jlighty
Posté le 13-05-2005 à 11:00:06  profilanswer
 

en gros "./" correspond à  /home/DigiFilm

n°677164
gwadboy
Posté le 13-05-2005 à 11:05:17  profilanswer
 

Ok. pour ./
 
Il y a : cron.d, cron.daily, cron.hourly, cron.monthly et cron.weekly
 
Mais on peut crée sont propre cron ?


Message édité par gwadboy le 13-05-2005 à 11:05:46
n°677165
jlighty
Posté le 13-05-2005 à 11:05:27  profilanswer
 

pour la crontab
0 0 * * 0,2,3,4,5 root <script de purge>
 
<script de purge> sera appelé à minuit tous les mardis,mercredi,jeudi,vendredi,dimanche
 
(si dimanche est aussi exclu : 0 0 * * 2-5 root <script de purge> )
 
http://www.linux-pour-lesnuls.com/crontab.php


Message édité par jlighty le 13-05-2005 à 11:07:05
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script de nettoyage

 

Sujets relatifs
[Mandriva 2005] Script d'upload de l'adresse IPProbleme de script shell
script de recherche[Debian] Script qui set l'AAM, testez-le !
Script d'installation automatique des softs sous GENTOOpartitionner disque dur avec un script perl
Lancer la Konsole en root avec un script sh ?dmg2iso > script perl foireux : besoin d'aide
[linux+emacs+script+modèle] question lecture de fichier[Réglé] Script pour transformer .wav en .ogg à partir d'un répertoire
Plus de sujets relatifs à : Script de nettoyage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR