Forum Programmation.shell Supprimer des répertoires vides sans les connaitres

Posté par  .
Étiquettes : aucune
0
3
déc.
2006
Bonjour,

Sur mon serveur j'ai un dossier vmail
Dans ce dossier je peux avoir :

vmail
--domaine1
----user1
------dossier
--------fichier
------dossier
------fichier
----user2
--domaine2
----user1
....etc...

J'ai une base de données MySQL dans laquelle il y a deux tables. Une table domain contenant les domaines web et une table user contenant l'adresse email des utilisateurs.

1er étape :
J'ai besoin d'un script capable de regarder pour chaque domain de la bdd si un user a un email de ce même domaine. Si oui il ne fait rien, sinon il supprime le dossier portant le nom de ce domaine, tout ce qu'il contient et efface le domaine de la bdd

2eme étape :
Le script doit regarder ensuite pour chaque dossier domaine restant si pour chaque dossier user qu'il contient il existe bien un user dans la table user utilisant ce mail genre :
if(email = user + '@' + domain){ ... }
(ou email représente le mail dans la bdd, user le nom du dossier user et domain le nom du dossier domain)
Si oui il ne fait rien, si non il supprime le dossier user en question et son contenu (sachant qu'il contient des sous-dossiers et des fichiers)

Admettons que j'ai cet arborescence :
vmail
--domainex.com
----user_a
-------dossier
----------fichier
-------fichier
----user_b
--domainey.com
----user_c

Dans la bdd j'ai dans la table domain :
domainex.com
domainey.com

Et dans la table user :
user_a@domainex.com

1ère étape, le script voit qu'il y a un user avec @domainex.com mais pas d'user avec @domainey.com il supprime donc le dossier domainey.com, son contenu et l'entrées domainey.com de la table domain

2ème étape il voit que pour le dossier user_a de domainex.com il y a bien une entrée user_a@domainex.com dans la table user, il ne fait rien. Par contre il n'y a pas d'entrée user_b@domainex.com il supprime alors le dossier user_b dans domainex.com


Pensez-vous qu'un tel script soit possible à réaliser ? Personnellement je n'ai pas la connaissance nécessaire pour le réaliser, j'ai fait pas mal de recherche qui m'ont donné des éléments de réponses, mais à mon niveau c'est pas suffisant pour que j'arrive à les assembler et adapter à ce que je veux faire.

Je précise que ce script sera un .sh placé dans cron.daily pour faire ce nettoyage tous les jours . Le plus simple aurait été un script PHP qui supprime le dossier user dès qu'on supprime l'entrée user de la bdd, et le dossier du domaine si c'était le seul user... hélas j'ai des access denied. Pas le droit de faire un chmod ou chown ou encore chown suivit du chmod si nécessaire. J'ai un serveur dédié (virtuel mais c'est pareil côté prog, config) donc si quelqu'un peut me donner un commande pour faire en sorte que ces dossiers soit manipulable depuis PHP dès qu'ils sont créés sans changer le groupe à qui appartient ces dossiers (vmail)
  • # C'est en forgeant ...

    Posté par  . Évalué à 2.

    Pensez-vous qu'un tel script soit possible à réaliser ?

    Oui.

    Personnellement je n'ai pas la connaissance nécessaire pour le réaliser, j'ai fait pas mal de recherche qui m'ont donné des éléments de réponses, mais à mon niveau c'est pas suffisant pour que j'arrive à les assembler et adapter à ce que je veux faire.

    Commence par faire des petits bouts simple de ce que tu veux et effectivement, ensuite, tu assembles. Tu n'en seras que plus content quand tu arriveras à quelques résultats avec en prime une connaissance supplémentaire sur les scripts.

    Certes, ça n'a pas l'air de se faire en 5 minutes, mais faut il bien commencer. Quelques indications :
    find avec les options -mindepth -maxdepth -type et quelques autres
    awk grep sed pour les manips des expressions régiulières [1]

    [1] http://tldp.org/LDP/abs/html/regexp.html

    Allez, courage !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.