#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
Au plaisir de lire vos suggestions !
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é ! 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
Hors ligne
#4 Le 24/06/2013, à 19:57
- pingouinux
Re : Script : envoi de fichier via FTP avec pause entre chaque envoi
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
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
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne