Ibays - Corbeille - Nettoyage

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

Ibays - Corbeille - Nettoyage

Messagepar gières » 04 Août 2011 15:48

Bonjour,
Un an après l'installation difficile de la Corbeille dans les Ibays http://forums.ixus.net/viewtopic.php?f=19&t=43682#p275099, nous nous sommes posés la question du nettoyage automatique de celle-ci puisque chaque fois qu'un fichier est ouvert, un fichier temporaire est créé puis supprimé par le logiciel à la fermeture du fichier.
Il se retrouve donc dans la corbeille.
Il faut donc bien nettoyer celle-ci de temps à autre.
Voici un petit programme écrit en Python par des néophytes qui a l'air de bien fonctionner.
On l’automatisera par cron, bien entendu.

Dans l'attente de vos remarques.

Bonne après-midi.

Code: Tout sélectionner
#!/usr/bin/env python
# -*- coding: utf-8 -*-


import os
import os.path
import re
import sys



def listdirectory(path):
    fichier=[]
    for root, dirs, files in os.walk(path):
        for i in files:
            fichier.append(os.path.join(root, i))
    return fichier
   #La fonction os.walk(path) crée un générateur de triplets (root, dirs, files) dans l'arborescence de path.
   #Un triplet est généré par répertoire visité.
      #   root représente le chemin d'accès du répertoire visité.
      #   dirs est la liste des sous-répertoires du répertoire root
      #   files est la liste des fichiers du répertoire root.

def listdirectory_marco(path):
    liste_fichier_supprimes = []
    list_repertoires_supprimes = []
   
    for root, dirs, files in os.walk(path):
        for element in files:
            if ".~lock." in element or (os.path.isfile(os.path.join(root, element)) and os.path.getsize(os.path.join(root, element))) == 0: #première lettre égale à "TILD" ou (fichier + égal à 0 Kilo)
           
            if dirs: #si les sous-repertoires enfants sont existants alors on incrémente la liste des fichiers à supprimer
               liste_fichier_supprimes.append(os.path.join(root, element))
               os.remove(os.path.join(root, element)) #suppression
               
               
            else: #si les sous-repertoires enfants sont inexistants alors on incrémente la liste des fichiers à supprimer
                  #et on remonte d'un cran
               liste_fichier_supprimes.append(os.path.join(root, element))
               os.remove(os.path.join(root, element)) #suppression
               
               print ""
               print "fichier"
               print element
               print "root"
               print root
               
               list_mon_repertoire_split = root.split(os.sep) #os.sep séparateur systeme /\
               print "list_mon_repertoire_split"
               print list_mon_repertoire_split
               
               mon_chemin = list_mon_repertoire_split[0] #dbut de mon chemin
               #for i in range(len(list_mon_repertoire_split), 0): #sens décroissant
               for i in range(len(list_mon_repertoire_split)): #sens décroissant
                  
                  for element in (list_mon_repertoire_split):
                     mon_chemin = os.sep.join(list_mon_repertoire_split) #on concatène avec "os.sep" = "\"
                  list_mon_repertoire_split.pop() #on vire le dernier élément de la liste pour le tour suivant en plus court
                  
                  print ""
                  print "mon_chemin"
                  print mon_chemin
                  
                  try:
                     os.rmdir(mon_chemin) #supprime le répertoire path si celui-ci est vide
                     list_repertoires_supprimes.append(mon_chemin)
                  except:
                     titi = 2
                  
               
    return liste_fichier_supprimes, list_repertoires_supprimes
   
      
if __name__ == "__main__":
   # 1 - Lister tous les fichiers et chemins présents au chemin_recycle_bin: on met ça dans un tableau
   # 2 - Pour chaque ligne du tableau, vérifier si le fichier commence par ~ TILD
      #si oui, vérifier qu'il n'y a pas d'autre fichiers dans ce répertoire
         #si oui, supprimer le fichier "TILD" et les répertoires parents qui ne contiennent rien
   
   
   #"infos systeme"
   print "infos systeme"
   print "version de python:"
   print sys.version_info
   
   chemin_fichier_courant = sys.argv[0]
   print "chemin_fichier_courant"
   print chemin_fichier_courant
      
   # le répertoire [b]nom_ibay[/b] est à remplacer par celui où se trouve la corbeille
   mon_array_de_array = listdirectory_marco("/home/e-smith/files/ibays/[b]nom_ibay[/b]/files/Corbeille")
   print "ma_liste_supprimee"
   print mon_array_de_array[0]
   
   print "mes_repertoires_supprimes"
   print mon_array_de_array[1]


[edit=Muzo]La balise code c'est bien aussi ;)[/edit]
gières
Second Maître
Second Maître
 
Messages: 41
Inscrit le: 18 Oct 2008 20:09
Localisation: près de Grenoble

Re: Ibays - Corbeille - Nettoyage

Messagepar jibe » 04 Août 2011 18:59

Salut,

C'est sympa de partager de telles solutions :) Ça compense certains posts d'assistés auxquels je viens de répondre !

Merci donc pour ce script et ne prends ce qui suit que comme un avis personnel de quelqu'un qui ne parle pas couramment le serpent et donc qui n'a pas cherché à comprendre comment fonctionne ce script...

Je n'ai jamais utilisé la poubelle quand j'utilisais W$, et quand j'ai commencé à utiliser Linux, j'ai trouvé ça bien parce qu'il n'y avait pas tous les gadgets inutiles que M$ a rendu indispensables à ses utilisateurs. Il est fréquent que je me batte contre des clients qui prennent la poubelle pour un classeur :
Ça je le débarrasse. Si j'en ai besoin plus tard, j'irai le récupérer dans la corbeille

A noter au passage que la poubelle de W$ porte le même nom que les espèces de paniers que j'ai sur mon bureau où je mets le courrier à traiter, les décomptes des choses à facturer et autres papiers importants à garder sous la main.

Tout ça pour dire que je comprends mal l'utilité d'installer une poubelle qui va servir de corbeille pour classer différentes choses à traiter ensuite, pour finir par s'apercevoir qu'elle contient essentiellement des ordures et donc qu'il faut la vider ! Et c'est là qu'on finit toujours un jour où l'autre à jeter le bébé avec l'eau du bain...

Mais bon, chacun fait comme il veut... Je dois d'ailleurs être bien trop vieux jeu, puisque maintenant la plupart des distribs Linux ont leur corbeille :lol:
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Re: Ibays - Corbeille - Nettoyage

Messagepar gières » 04 Août 2011 21:33

Bonsoir,

A Muzo, merci pour le rappel.

A Jibe, on a mis une corbeille, non pas pour classer provisoirement mais pour éviter de perdre du temps à restaurer, à partir du serveur de sauvegarde, les fichiers effacés par erreur (ou par dérapage de souris) par les utilisateurs. Avec la corbeille, ils vont les récupérer sans nous !

Bonne fin de journée.
gières
Second Maître
Second Maître
 
Messages: 41
Inscrit le: 18 Oct 2008 20:09
Localisation: près de Grenoble

Re: Ibays - Corbeille - Nettoyage

Messagepar jibe » 04 Août 2011 22:39

gières a écrit:non pas pour classer provisoirement

Ça, je me doutais bien que ce n'était pas ton but ! Mais on risque de reparler dans quelque temps de la manière dont, finalement, les gens utilisent et vident ta poubelle/leur corbeille... Avec ces co...ries à la sauce M$, les gens n'ont plus aucun sens de la prudence et des responsabilités. Si, au lieu de perdre du temps à restaurer leurs fichiers, vous leur imposiez une procédure longue et ch..., voire ne rien leur récupérer quand la vie de la boite n'en dépend pas, leur souris ne déraperait plus !

J'ai passé une partie du week-end à récupérer des données effacées par mégarde par la fille d'un copain (4,8 Go quand même, dans plus de 12000 fichiers !). Je lui ai bien fait la leçon, soutenu par son père, sur la nécessité de faire des sauvegardes. Lundi matin, le copain m'appelle, très en colère contre sa fille qui a fait à nouveau une mauvaise manip et lui a vidé son disque. Lorsque je lui ai demandé de quand dataient ses sauvegardes, il m'a expliqué que..., étant donné que..., etc... bref : pas de sauvegardes, c'est inutile. Là, j'ai explosé : je l'ai traité de c** pour oser accuser sa fille : comment pourrait-elle être consciente de ce qu'elle fait, avec un père aussi irresponsable... et injuste !

Les principes et les barrières (et aussi les poubelles !), c'est pareil : les grands passent dessus, les petits passent dessous, il n'y a que les c** qui rentrent dedans !

Le problème, c'est qu'à force d'en mettre partout où c'est inutile, les gens accusent le manque de barrière au lieu de regarder où ils vont... Et là où il y en a, comme elles ne servent à rien, ils les cassent, les utilisent à d'autres fins, ou simplement prennent la mauvaise habitude de passer dessus ou dessous...

Bon, je crois que je suis un peu HS, là, et que j'ai dû vaguement dépasser le point godwin :oops:
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Re: Ibays - Corbeille - Nettoyage

Messagepar mab » 03 Sep 2011 20:53

Salut,
Quand un fichier est sauvegardé, souvent, il est d'abord enregistré sous un nom temporaire, puis une fois l'enregistrement effectué et ok, l'ancien fichier est supprimé, et le nouveau renommé.

Ca doit donc permettre de récupérer une version lors d'une fausse manip.
Avatar de l’utilisateur
mab
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 293
Inscrit le: 03 Sep 2004 22:42
Localisation: centre


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron