Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/06/2013, à 18:40

cyril333

Script : envoi de fichier via FTP avec pause entre chaque envoi

Bonjour,

Je me tourne vers vous car je sèche sur un script que je suis entrain de créer.

L'objectif est le suivant :
- j'ai plusieurs fichiers de 4 à 5 Go dans un répertoire (ce sont des sauvegardes)
- je voudrais les envoyer sur mon serveur FTP chaque semaine
- le serveur FTP me bloque si j'envoie plus de 5 GO en 15 min (ce que me permet le débit de ma connexion. C'est bête, pour une fois que ça va vite...)
--> la solution, faire une pause de 5 minutes entre chaque envoi de fichier.

Le problème : j'ai bien mis en place la commande pour envoyer le fichier via ncftp mais je n'arrive pas à intercaler la commande "sleep" entre deux envois.

Voici mon script actuel :

#!/bin/bash
for i in "/home/XXX/*"; do ncftpput -m -u "nomd'utilisateur" -p "motdepasse" "IPduserveurFTP" "/" $i ; done

Pour faire une pause, j'ai voulu intégrer la fonction sleep :
for i in "/home/XXX/*"; do ncftpput -m -u "nomd'utilisateur" -p "motdepasse" "IPduserveurFTP" "/" $i && sleep 300s ; done
Malheureusement, la pause n'a pas lieu entre chaque fichier mais à la fin de tous les envois (donc mon serveur bloque).

Donc où dois-je placer cette fonction sleep ? Ou comment demander au script de faire une pause entre chaque envoi ?

C'est la question tordue du début de semaine wink

Au plaisir de lire vos suggestions ! smile


Cyril

Hors ligne

#2 Le 24/06/2013, à 18:48

pingouinux

Re : Script : envoi de fichier via FTP avec pause entre chaque envoi

Bonjour,
Essaye ceci :

#!/bin/bash
for i in /home/XXX/*; do ncftpput -m -u "nomd'utilisateur" -p "motdepasse" "IPduserveurFTP" "/" "$i"; sleep 300 ; done

Hors ligne

#3 Le 24/06/2013, à 19:47

cyril333

Re : Script : envoi de fichier via FTP avec pause entre chaque envoi

Bonjour Pingouinux,

Tu sais quoi ? Je te paierai bien un café ! wink pour m'avoir donné la solution et en moins de 10 minutes !

Quand je pense que c'est un simple ";" qui posait souci.

Merci encore pour ton aide, vraiment smile

Hors ligne

#4 Le 24/06/2013, à 19:57

pingouinux

Re : Script : envoi de fichier via FTP avec pause entre chaque envoi

cyril333 a écrit :

Quand je pense que c'est un simple ";" qui posait souci.

Non, ce n'était pas ça, mais les " ", en trop autour de /home/XXX/*, et qui manquaient autour de $i

Hors ligne

#5 Le 25/06/2013, à 08:15

tiramiseb

Re : Script : envoi de fichier via FTP avec pause entre chaque envoi

Salut,

C'est surtout les " " en trop autour de /home/XXX/*, oui smile

Pour tout bien expliquer :

Avec « for i in /home/XXX/* », tu fais une boucle sur tous les fichiers correspondant à /home/XXX/*.
=> ça exécute la commande une fois pour chaque fichier
Avec « for i in "/home/XXX.*" », tu fais une boucle sur le seul argument que tu donnes à "for", c'est à dire la chaîne "/home/XXX/*".
=> ça exécute la commande une fois, sur "/home/XXX/*"


J'ajoute également que :
- avec ton "&&", ça ne fait le sleep que si le transfert a réussi (donc aucune attente si le transfert échoue)
- avec le ";" de pingouinux, ça fait le sleep tout le temps

Hors ligne