Script de sauvegarde FTP

Résolu
xianghua -  
 xianghua -
Bonjour

J'essaye de faire un petit script permettant de remonter les bases sql d'un serveur linux afin de les envoyer sur un serveur FTP (j'automatiserais plus tard avec un cron)
Malheureusement je suis une taupe en script!

le voici:

#!/bin/sh

#Dump des bdd SQL
mysqldump -u glpiuser -pglpi glpidb > /home/root/backup/glpi.sql
mysqldump -u ocs -pocs ocsweb > /home/root/backup/ocs.sql
#Compression des fichiers .sql du répertoire
tar zcvf backup-'date +%A'.tar.gz *

#variable
PORT='21'
USER='INTRANET'
PASSWD='XXXXXXX'
HOST='172.17.1.212'

#Envoyer sur le NAS en FTP
ftp $HOST $PORT
$USER
$PASSWD
cd /MySQL
put /home/root/backup-'date +%A'.tar.gz

Tout se basse bien jusqu'au FTP! là ça bloque!
ça me met

root@INTRANET:/home/root/backup# ./saveftp.sh
: Aucun fichier ou dossier de ce type
: commande introuvable
glpi.sql\r
ocs.sql\r
: commande introuvable
: commande introuvable
.onnected to 172.17.1.212
220
: commande introuvable line 17: INTRANET
: commande introuvableXXXXXXXX
./saveftp.sh: ligne 19 : cd: /MySQL: Aucun fichier ou dossier de ce type
./saveftp.sh: line 20: put : commande introuvable
: commande introuvable
: commande introuvable
: commande introuvable
root@INTRANET:/home/root/backup#

à noter que je souhaite glisser dans le répertoire MySQL à la racine du serveur FTP
(La connexion marche bien depuis mon windows à partir de Filezilla)

Si les commandes sont introuvables, cque faut il mettre? x_X

Merci!

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Quelle distrib ?
    Quel shell ?
    D'où lances-tu ton script ?
    Sous quel système l'as-tu écris ?
    $USER est une variable système, donc changer de nom ;-(
    0
  2. xianghua
     
    Salut zipe31, merci de m'avoir répondu!

    Ubuntu 10.4 TLS
    (Shell = sh? j'y connais rien :o)
    je lance mon script de /home/root/backup
    je l'ai édité depuis vim

    Je dois utiliser quoi à la place de $USER? je pige pas trop

    Mon user sur le ftp est intranet, je devrais donc mettre quoi?

    Encore merci!
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      (Shell = sh? j'y connais rien :o)
      Tu devrais mettre "#! /bin/bash" comme shebang dans ton script, car sur Ubuntu le shell par défaut est "dash" (sh est en fait un lien symbolique qui pointe sur dash) et il y a quelques petites différences notoires ;-\

      je lance mon script de /home/root/backup
      Ok, je voulais juste être sûr que tu sois dans le même répertoire lorsque tu lances la commande "tar".

      je l'ai édité depuis vim
      Peux-tu faire un copier/coller du résultat de la commande :
      cat -A saveftp.sh


      Je dois utiliser quoi à la place de $USER? je pige pas trop

      Mon user le ftp est intranet, je devrais donc mettre quoi?

      En fait mieux vaut ne pas utiliser des variables déjà définies. Par exemple à la place tu peux mettre :
      user_ftp='INTRANET'  
      password_ftp='XXXXX'


      Est-ce que chaque ligne de ton script tapées une par une dans le terminal, marchent ?
      0
    2. xianghua
       
      Merci beaucoup pour ton aide, je viens de rentré chez moi, je me connecte au boulot en vpn pour bosser et jte dis ça
      0
    3. xianghua
       
      (au fait j'avais fait un chmod +x pour le rendre exécutable, pas de problème?

      ça me met après modifications des variables



      root@INTRANET:/home/root/backup# ./saveftp
      glpi.sql
      ocs.sql
      saveftp
      Connected to 172.17.1.212.
      220
      Name (172.17.1.212:root): INTRANET
      331 Please specify the password.
      Password:
      230 Login successful.
      Remote system type is UNIX.
      Using binary mode to transfer files.
      ftp> quit
      221 Goodbye.
      ./saveftp: line 15: INTRANET : commande introuvable
      ./saveftp: line 16: admingp38 : commande introuvable
      ./saveftp: ligne 17 : cd: /MySQL: Aucun fichier ou dossier de ce type
      ./saveftp: line 18: put : commande introuvable
      root@INTRANET:/home/root/backup# ls
      backup-mardi.tar.gz glpi.sql ocs.sql saveftp
      root@INTRANET:/home/root/backup#

      Les commandes fonctionnent jusqu'au FTP
      là j'ai du rentrer à la main le login et mdp après exécution du script
      0
    4. xianghua
       
      mon fichier ressemble à ça maintenant


      #!/bin/bash
      mysqldump -u glpiuser -pglpi glpidb > /home/root/backup/glpi.sql
      mysqldump -u ocs -pocs ocsweb > /home/root/backup/ocs.sql
      #Compression des fichiers du répertoire .sql
      tar zcvf backup-'date +%A'.tar.gz *

      #variable
      PORT='21'
      user_ftp='INTRANET'
      passwd_ftp='XXXXXX'
      HOST='172.17.1.212'

      #Envoyer sur le NAS en FTP
      ftp $HOST $PORT
      $user_ftp
      $passwd_ftp
      cd /MySQL
      put /home/root/backup-'date +%A'.tar.gz
      0
    5. xianghua
       
      et le bash -x saveftp donne:

      root@INTRANET:/home/root/backup# bash -x saveftp
      + mysqldump -u glpiuser -pglpi glpidb
      + mysqldump -u ocs -pocs ocsweb
      ++ date +%A
      + tar zcvf backup-mardi.tar.gz glpi.sql ocs.sql saveftp
      glpi.sql
      ocs.sql
      saveftp
      + PORT=21
      + user_ftp=INTRANET
      + passwd_ftp=xxxxx
      + HOST=172.17.1.212
      + ftp 172.17.1.212 21
      Connected to 172.17.1.212.
      220
      Name (172.17.1.212:root):


      A noter qu'il faudrait que j'efface après de mon répertoire /home/root/backup le backup du jour (je compte faire un cron après) et qu'il faudrait que genre tout les 5 jours j'efface les vieux backup du ftp..mais bon :D
      0