Script de sauvegarde FTP

Résolu/Fermé
xianghua - 20 mars 2012 à 17:26
 xianghua - 20 mars 2012 à 20:26
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!
A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
20 mars 2012 à 17:33
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
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 408
Modifié par zipe31 le 20/03/2012 à 18:18
(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
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
(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
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
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