Script Shell pour Rsync [Résolu] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 28-06-2007 à 10:23:19
déjà, tu as une erreur ligne 8 : il faut mettre la commande entre backquotes :
DATEA=`date +%d%m%y` |
Ca devrait régler ton problème de nom de dossier de sauvegarde.
Pour le reste, j'ai pas eu le temps de regarder les détails...
Marsh Posté le 28-06-2007 à 10:30:09
dans ton for tu met source et après tu utilise $SOURCE ?
Marsh Posté le 28-06-2007 à 10:31:16
Ah merci bien, en effet ca marche tout de suite mieux comme ca ^^
En passant une petite précision, la commande rsync utilisée dans ce script je l'ai testée avant en ne mettant pas de variables mais les chemin réels etc... et elle fonctionnais tres bien
Edit : C'est au niveau des majuscules que ca te choque?
Marsh Posté le 28-06-2007 à 10:55:07
Quelques remarques:
- ligne 153: sans doute $ADDRADMIN au lieu de ADDRADMIN.
Sans doute à utiliser dans le subject $DATEA aussi ce qui permet d'avoir la date dans le sujet du courrier.
- même question soumise par Le_Tolier.
- scp/ssh: je me demande où tu fournis login/password SSH.
Marsh Posté le 28-06-2007 à 10:58:52
meijin a écrit : Ah merci bien, en effet ca marche tout de suite mieux comme ca ^^ En passant une petite précision, la commande rsync utilisée dans ce script je l'ai testée avant en ne mettant pas de variables mais les chemin réels etc... et elle fonctionnais tres bien
|
c'est pas le fait d'utiliser des majuscule, mais plus que un coup c est source et après SOURCE, je sais pas si ca fonctionne très bien.
dnlilas a écrit : Quelques remarques: |
utilisation de clef ssh surment
Marsh Posté le 28-06-2007 à 11:01:50
dnlilas a écrit : Quelques remarques: |
Merci c'est corrigé, j'avais pas fais attention
dnlilas a écrit : - même question soumise par Le_Tolier. |
Justement je comprend pas bien sa question en fait si vous pouviez préciser ce qui pose pb
parce que en fait ce que je fais c'est que a chaque bouclage, je prend ce qu'il ya dans $SOURCES (initialisée au dessus) et je met dans source histoire que chaque boucle s'occupe d'un dossier spécifique...
En gros au premier coup ya /etc qui se met dans source et je le ressort ensuite en appelant ma variable comme on appelle un variable normale. A moins que je n'ai pas bien saisi le concept du for...
dnlilas a écrit : - scp/ssh: je me demande où tu fournis login/password SSH. |
En fait j'ai générer une paire de clés DSA et j'ai mis la clé publique de l'user local dans le authorized_keys de mon serveur de prod
Marsh Posté le 28-06-2007 à 11:03:46
Le_Tolier a écrit : c'est pas le fait d'utiliser des majuscule, mais plus que un coup c est source et après SOURCE, je sais pas si ca fonctionne très bien. |
Je dois avouer que pour le for j'ai regarder un peu les exemples sur le net et j'ai vu des personnes faire comme ça donc j'ai betement suivi mais tu as peux etre raison, je vais modifier et voir ce que ca donne, merci pour la remarque
Bon ben tu avais raison en effet maintenant ca passe tout bien vraisemblablement... en tout cas pour l'instant car la sauvegarde est très longue vue les données a récupérée !!
Encore une fois je me suis fais pieger par une erreur des plus primitives
Merci beaucoup pour votre aide Vous m'avez vraiment sortis une grosse épine du pied
Marsh Posté le 28-06-2007 à 11:22:08
franceso a écrit : déjà, tu as une erreur ligne 8 : il faut mettre la commande entre backquotes :
|
Et d'ailleurs, pour rester compatible avec les nouvelles versions de bash, il vaut mieux mettre
DATEA=$(date +%d%m%y) |
Marsh Posté le 28-06-2007 à 11:24:48
wedgeant a écrit : Et d'ailleurs, pour rester compatible avec les nouvelles versions de bash, il vaut mieux mettre
|
ah bon donc, il considere l'expression calculée comme variable
c'est bien mieux comme cela
Marsh Posté le 28-06-2007 à 11:28:03
memaster a écrit : ah bon donc, il considere l'expression calculée comme variable |
Non, une variable, ce serait plutôt ${VAR}.
Mais c'est vrai que c'est vachement mieux comme ça pour les problèmes d'imbrications de quotes etc...
Marsh Posté le 28-06-2007 à 11:35:11
wedgeant a écrit : Et d'ailleurs, pour rester compatible avec les nouvelles versions de bash, il vaut mieux mettre
|
Ok merci, et c'est vrai que c'est plus clair qu'avec les backquotes! et plus dans la logique du langage
Marsh Posté le 28-06-2007 à 12:25:12
La syntaxe $() c'est une extension... La bonne notation, la seule la vraie l'originale, c'est les backquotes. Genre sous bsh, y'a pas $().
Marsh Posté le 28-06-2007 à 12:28:10
matafan a écrit : La syntaxe $() c'est une extension... La bonne notation, la seule la vraie l'originale, c'est les backquotes. Genre sous bsh, y'a pas $(). |
j'allais posé la question de la compatibilité du code avec le standard
Marsh Posté le 28-06-2007 à 12:38:06
matafan a écrit : La syntaxe $() c'est une extension... La bonne notation, la seule la vraie l'originale, c'est les backquotes. Genre sous bsh, y'a pas $(). |
Voui, mais là il code en bash donc on s'en tape de la comptatibilité inverse
Marsh Posté le 28-06-2007 à 13:43:26
wedgeant a écrit : Voui, mais là il code en bash donc on s'en tape de la comptatibilité inverse |
portabilité du code toussa
Marsh Posté le 28-06-2007 à 13:49:45
wedgeant a écrit : Voui, mais là il code en bash donc on s'en tape de la comptatibilité inverse |
meijin a écrit :
|
Y a rien qui te garantit que /bin/sh -> bash sur toutes les plateformes...
Marsh Posté le 28-06-2007 à 21:51:42
Sauf que personne ne fait de vrai sh 'pur'... j'ai essayé une fois en suivant les recommandations de portabilité des autotools :
http://www.gnu.org/software/autoco [...] tml#SEC114
La section 10.8 nous apprend que "!" pour la négation logique n'est pas portable, et la section 10.5 que $@ non plus (bon ca ok c'est connu).
Donc les shell script portables, j'y crois pas... autant mettre #!/bin/bash en shebang, assumer et utiliser les bashismes à donf ( genre ((i++)) et autres [[ ]] )
Marsh Posté le 29-06-2007 à 04:55:33
ReplyMarsh Posté le 29-06-2007 à 09:45:19
Xavier_OM a écrit : Sauf que personne ne fait de vrai sh 'pur'... j'ai essayé une fois en suivant les recommandations de portabilité des autotools : |
Dans apt-zip, on fait du shell-script portable
C'est pas si difficile, il suffit de vérifier que ton script passe aussi avec dash, et tu es à peu près sûr qu'il n'y a aucun bashisme dedans...
Marsh Posté le 29-06-2007 à 10:24:48
franceso a écrit : Dans apt-zip, on fait du shell-script portable |
j'ai survolé le code d'apt-zip ya quelque temps, et j'ai des doutes sur la portabilité
Marsh Posté le 29-06-2007 à 10:27:49
chaica a écrit : A mon avisl'erreur c'est la notion de script shell portable |
on dira portable avec le minimum de modifs parce que le code parfait n'existe pas
Marsh Posté le 29-06-2007 à 10:33:36
Xavier_OM a écrit : j'ai survolé le code d'apt-zip ya quelque temps, et j'ai des doutes sur la portabilité |
Je parle pas du code d'apt-zip lui même (qui est destiné à tourner sur des machines Debian, donc possédant bash), mais plutôt des scripts de téléchargement des paquets qui sont générés.
Si tu as des doutes sur la portabilité à ce niveau-là, n'hésite pas à le signaler : ça fait partie des choses qu'on essaie de garantir.
Marsh Posté le 29-06-2007 à 10:45:17
memaster a écrit : on dira portable avec le minimum de modifs parce que le code parfait n'existe pas |
Sisi, ça existe:
Code :
|
Marsh Posté le 29-06-2007 à 10:48:35
wedgeant a écrit : Sisi, ça existe:
|
on mettra ça sur le compte du vendredi
Marsh Posté le 29-06-2007 à 12:08:16
wedgeant a écrit : Sisi, ça existe:
|
méfions-nous du echo http://www.gnu.org/software/autoco [...] tml#SEC122
Marsh Posté le 13-07-2007 à 02:05:34
Salut,
au cas ou tu ne le sait pas, tu peut mettre ton script en debug de plusieurs façons:
mettre
#!/bin/sh -x
au debut,
executer le script comme ça:
sh -x lescript.sh
ligne 47:
if test -x $FICHIERLOG;
AMHA -x c'est pour les executables. un fichier c'est -f ou -e
Il faut "quoter" toutes les variables.
++
Marsh Posté le 28-06-2007 à 10:03:21
Bonjour,
Je suis sur un problème depuis plusieurs jours au niveau de la sauvegarde d'un site web hébergé chez OVH sur un serveur hébergé localement.
La meilleure méthode est Rsync, ca je pense pas que l'on pourra me dire le contraire et je me suis donc tout simplement mis à faire un script qui devra être lancé tous les soirs grâce à un CRON.
Seulement ce script fonctionne... bizarrement !! Là ou je lui demande de me sauvegarder /etc, il me sauvegarde /root, et la ou je lui demande de sauver /var, il me sauvegarde /home... donc bon je sèche un peu !!
De même, j'ai une variable ou je stock la date du moment pour daté l'archive mais au bout du compte le dossier s'apelle "backup-date".
En esperant que l'on arrivera à me dépanner parce que vraiment je ne vois pas !! Merci d'avance pour votre participation (surtout vu la longueur du script )
Message édité par meijin le 28-06-2007 à 11:11:51