Petit script bash

l'espacement entre DDresau et -o : normal ?
Avec 
su -
au lieu de sudo , pas mieux ?

l’espacement entre DDresau et -o : normal ?
Avec
su -
au lieu de sudo , pas mieux ?

je n’y connais rien en script mais, ne faut il pas terminer chaque ligne de commande par un point-virgule " ; " ?
(j’ai la flème de ressortir mes cours pour vérifier)

[quote=“Twistophe”]je reviens sur mon petit script,…
[/quote]

Pourrais-tu renvoyer la totalité du script ?
Quel est le but exact que tu recherches car j’ai pas tout compris.

[quote=“fabrozor”]je n’y connais rien en script mais, ne faut il pas terminer chaque ligne de commande par un point-virgule " ; " ?
(j’ai la flème de ressortir mes cours)[/quote]
Non, en shell script, c’est le newline qui est le séparateur, c’est la raison pour laquelle il faut rajouter un \ si ta commande prend plus d’une ligne.

objectif principal : faire des backups de plusieurs partage samba.
objectif secondaire : créer un fichier listant ce qui se trouve dans chacun des backups.

voici mon script :

[quote]#!/bin/bash

Script de sauvegarde semi automatique des partages :

Admin, Commercial, Marketing, Project Docs et Test

Réalisé par Christophe Caffin le 03 mars 2006

Rev1 06/03/2006

Rev2 07/03/2006

Initialisation des variables

rep=/mnt/DD_reseau/Backup-autres-date +%d-date +%B-date +%Y/
listing=/home/backup/listing_backup-date +%d-date +%B-date +%Y

#montage du disque réseau dans /mnt/DD_reseau
sudo smbmount //IP_DD/Share /mnt/DD_reseau -o username=xxxxx,password=xxxxx

#test de la non-existance du répertoire cible et création
if test ! -d $rep
then sudo mkdir $rep
fi

#listing des fichiers à copier
sudo find /partage/ -print -depth | grep -v “/partage/Dev” > $listing
sudo grep “/partage/Marketing” $listing > $rep’marketing.lst’
sudo grep “/partage/Project” $listing > $rep’projectdocs.lst’
sudo grep “/partage/Commerical” $listing > $rep’commercial.lst’
sudo grep “/partage/Admin” $listing > $rep’admin.lst’
sudo grep “/partage/Test” $listing > $rep’test.lst’

#copie compressée des partages
sudo tar -czvpT $rep’marketing.lst’ --totals --atime-preserve -f ${rep}marketing.tgz
sudo tar -czvpT $rep’projectdocs.lst’ --totals --atime-preserve -f ${rep}projectdocs.tgz
sudo tar -czvpT $rep’commercial.lst’ --totals --atime-preserve -f ${rep}commercial.tgz
sudo tar -czvpT $rep’admin.lst’ --totals --atime-preserve -f ${rep}admin.tgz
sudo tar -czvpT $rep’test.lst’ --totals --atime-preserve -f ${rep}test.tgz

#démontage du DD réseau
sudo umount /mnt/DD_reseau

exit 0[/quote]

les erreurs retournées :

[quote]> ./backupautres
find: AVERTISSEMENT: vous avez spécifié l’option -depth après un argument qui n’est pas une option -print mais les options sont positionnelles (-depth affecte les tests spécifiés avant aussi bien qu’après)

./backupautres: line 25: /mnt/DD_reseau/Backup-autres-07-mars-2006/marketing.lst: Permission non accordée
./backupautres: line 26: /mnt/DD_reseau/Backup-autres-07-mars-2006/projectdocs.lst: Permission non accordée
./backupautres: line 27: /mnt/DD_reseau/Backup-autres-07-mars-2006/commercial.lst: Permission non accordée
./backupautres: line 28: /mnt/DD_reseau/Backup-autres-07-mars-2006/admin.lst: Permission non accordée
./backupautres: line 29: /mnt/DD_reseau/Backup-autres-07-mars-2006/test.lst: Permission non accordée
tar: /mnt/DD_reseau/Backup-autres-07-mars-2006/marketing.lst: ne peut open: Aucun fichier ou répertoire de ce type
tar: Erreur non récupérable: fin de l’exécution immédiate
tar: /mnt/DD_reseau/Backup-autres-07-mars-2006/projectdocs.lst: ne peut open: Aucun fichier ou répertoire de ce type
tar: Erreur non récupérable: fin de l’exécution immédiate
tar: /mnt/DD_reseau/Backup-autres-07-mars-2006/commercial.lst: ne peut open: Aucun fichier ou répertoire de ce type
tar: Erreur non récupérable: fin de l’exécution immédiate
tar: /mnt/DD_reseau/Backup-autres-07-mars-2006/admin.lst: ne peut open: Aucun fichier ou répertoire de ce type
tar: Erreur non récupérable: fin de l’exécution immédiate
tar: /mnt/DD_reseau/Backup-autres-07-mars-2006/test.lst: ne peut open: Aucun fichier ou répertoire de ce type
tar: Erreur non récupérable: fin de l’exécution immédiate[/quote]

voila, comme vous pouvez le constater, que j’utilise $rep’fic.lst’ ou ${rep}fic.lst ca revient au meme (l’erreur précédente était du au fait que j’avais mis des espaces dans le nom du dossier de backup et que je m’étais surement embrouillé dans les “” ^^)

maintenant j’aimerais comprendre pourquoi je n’ai pas le droit d’écriture sur le disque vu que je peux y créer un dossier…

Le problème est que le sudo ne s’applique qu’à la commande qui suit le sudo. Donc lors du | ou de la redirection, tu n’est donc plus root.

A ta place, je passerais en root en début de script et me déconnecter en fin de script.

Avec su - au lieu de sudo , pas mieux ?

@fsoumil : j’ai essayé de faire un sudo -s en début de script, mais il m’ouvre un shell en root et attend la suite… il n’exécute pas le restant du script :-/

@ricardo : en faisant “su -” en début de script, il va me demander le pass root, non ?

bon… j’ai une solution simple mais ca ne m’expliquera pas pourquoi les droits root ne sont pas conservé pour la redirection du grep…

la solution : sudo monscript

By design ! C’est comme ça que marche sudo…
Je suppose qu’il fork, balance la commande, et exit. Du coup, ce qui suit est pris en charge par ton shell et non plus sudo.

a ok, je pensais que la redirection conservais les droits de la commande exécuter précédemment…

bon, sinon, il y a quelque chose de louche qui se produit. lors du backup précédent, mon script n’étant pas encore opérationnel, j’avais simplement copié les fichiers sur le DD de sauvegarde. maintenant que le script semble fonctionner je l’ai lancé pour tester mais il me crée un fichier + grand que le dossier d’origine !

par exemple, le dossier “marketing” faisait 645 Mo non compressé il y a 2 jours. maintenant, il me créé un fichier de + de 2 Go !!

voici la commande lancé :

ma commande vous semble t-elle correcte ? pourquoi la taille du fichier est-elle si grande tout d’un coup ?

il y avait 2929 fichiers avant hier, aujourd’hui mon $FICLIST contient 2933 lignes, ce ne sont pas les 4 fichiers supplémentaire qui font la différence de taille, une idée ?

bon… hum… y’a une section “J’me sent seul” sur le forum ??

la blague de TARé : c’est une commande récursive, pas la peine d’inqiquer le nom des fichiers à sauvegarder (contrairement à cpio), il suffit d’indiquer le dossier qui les contients :smiley:

j’ai essayé de me fouetter hier soir, mais j’ai finis par apprécier… :confused: :laughing: