Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[sh] Script de sauvegarde par FTP


rAd1cAl_EdwArd

Messages recommandés

Salut, je suis en ce moment en train de modifier le script de sauvegarde de mon serveur...
Je vous épargne tout le blabla et vous passe directement l'erreur et le code lié:

/srv/vanaheim/backup/1and1sql.sh: 32: /srv/vanaheim/backup/1and1sql.sh: Syntax error: word unexpected (expecting "do")
ftp -inv <<EOF
  open $remoteserver2
  user $username2 "$password2"
  prompt
  cd $remotepath2
  $(
    for fichier in `ls /srv/vanaheim/backup/1and1/*-SqlBackup.tar.gz`; do
      echo "put $fichier"
    done
  )
  bye
EOF

La ligne 32 étant ma boucle for...
Pourquoi pas un simple mput *-SqlBackup.tar.gz ? A cause du timeout.

Sinon, ou est-ce que j'ai fait de la merde? Merci de me guider maitre.gif

Modifié par rAd1cAl_EdwArd
Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...

Salut, (vieux motard que jamais, j'ai pas pu répondre avant car pas reçu d'alerte mail)

 

j'ai /bin/sh en shebang mais d'après un dev, ce serai un bug de ftp et m'a conseillé de passer par lftp:

lftp -u $username2,$password2 -e "mirror --reverse --verbose $localpath/ $remotepath2" $remoteserver2 << bye
Par contre, si jamais ce n'est pas un bug mais bien une couille dans mon script, je serai heureux d'avoir un script fonctionnel avec ftp (pour un mutu qui n'aurai pas lftp par exemple)
Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Peut-être une explication.

for fichier in `ls /srv/vanaheim/backup/1and1/*-SqlBackup.tar.gz`; do

La syntaxe supportée par les différents shell (vous n'avez pas indiqué quel shell était utilisé) :

for variable in var1 var2 ... varn
do
 ...
done

ou

for variable in $(ls /srv/vanaheim/backup/1and1/*-SqlBackup.tar.gz)
do
 ...
done

Par ailleurs, si des noms contiennent des espaces, la boucle échouera à transférer ces fichiers correctement. L'utilisation de l'option -Q semble souhaitable.

Modifié par Jocko
Lien vers le commentaire
Partager sur d’autres sites

mon interpréteur est /bin/bash mais celui utilisé pour le script est /bin/sh (shebang: #!/bin/sh)

Si je comprends bien, mon script devrais ressemble a ça:

ftp -inv <<EOF
  open $remoteserver2
  user $username2 "$password2"
  prompt
  cd $remotepath3
  $(for fichier in $(ls /srv/vanaheim/backup/1and1/*-SqlBackup.tar.gz)
    do
      echo "put $fichier"
    done
  )
  bye
EOF

C'est bien ça?

edit: je fait toujours en sorte de ne jamais avoir d'espace dans les noms de fichiers, l'étoile dans *-SqlBackup.tar.gz étant la date au format AnnéeMoisJour-

Modifié par rAd1cAl_EdwArd
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...