Attribuer le nom des sous dossiers comme valeur de variable

Bonjour,

Je suis en train de faire un script de sauvegarde. Dans mon dossier www/ J’ai des tas de dossiers, qui correspondent à des services. Chaque service a une bdd sql qui a le même nom.

Donc je voudrais automatiser mes sauvegardes en fonction d’une variable $service.

En théorie, ça donnerait:

Pour chaque $service == NOM_DE_SOUS_DOSSIER { rsync -av /www/$service /destination/$service/ mysqldump --user=XXXX --password=YYYY > XXXX /destination/$service/sql }

Donc ce qui m’embête, c’est comment attribuer le nom du sous dossier dans $service, et comment faire pour balayer tous les sous dossiers (donc tous les services) ?

Merci de votre lecture.

Tu dois pouvoir le faire comme ça :

for dir in /www/* ; do service="$(basename $dir)" rsync -av "/www/$service" "/destination/$service/" mysqldump --user=XXXX --password=YYYY > XXXX "/destination/$service/sql" done
:slightly_smiling:

Bonjour,

Pour en l’état, ça ne marche pas, il me dit “fin prématurée”…

Je continue mes investigations.

EDIT : En fait ça marche, il faut pas que j’oublie le done à la fin ^^

Merci pour ton aide ^^

Par contre ça ne marchera pas si tu as un espace dans le nom d’un de tes services (ce dont je doute, étant donné l’endroit ou ils sont placés…) Dans ce cas il faut jouer avec l’IFS (Internal File Separator) :

IFS=\n for dir in /www/* ; do ...
(c’était juste pour étaler ma pseudo-science. Si on me cherche, je suis déjà dehors :arrow_right: )

Je pense que si ça marche :

[code]$ mkdir tata ‘to ti’
$ for f in * ; do

echo $f
done
tata
to ti
$ rmdir tata ‘to ti’[/code] :slightly_smiling: