Splitte un gros fichier et déposer sur FTP toutes les 15 mn
RésoluBonjour,
Dans mon script Bash, je voudrais diviser un gros fichier en fichiers de 3000 lignes, puis toutes les 15 minutes déposer le tout fichier par fichier sur un FTP après l'avoir renommé comme à l'origine.
Pour diviser un gros fichier, je sais faire :
$ split -l 3000 -d fichier.txt fichier.txt fichier.txt00 fichier.txt01 fichier.txt02 fichier.txt03 fichier.txt04 fichier.txt05 ...
Là où j'ai besoin de vous, c'est que je dois faire une boucle qui toutes les 15mn dépose fichier par fichier en le renommant comme à l'origine, c'est-à-dire :
- fichier.txt00
- on le renomme fichier.txt puis on le dépose sur le FTP
- 15 minutes plus tard, fichier.txt01
- on le renomme fichier.txt puis on le dépose sur le FTP
- etc..
Une idée comment je pourrais faire?
Merci pour votre aide.
L'accès au savoir est la première liberté que chaque homme devrait avoir.
2 réponses
-
Modérateur
Bonjour,
Tu peux faire une boucle for qui incrémente ton compteur, et attendre à chaque fin d'itération pendant 15 minutes avec la commande split. Voici un exemple qui illustre cette idée :
#!/bin/bash # Fake split # << for i in $(seq 1 5) do filename=$(printf "fichier.txt%d" $i) touch "$filename" done # >> for filename in $(ls -1 fichier.txt*) do echo "ftp: put $filename" sleep 1 # Délai à remplacer par 900 (15 * 60 = 900) doneCeci je pense devrais aussi regarder du côté de logrotate.
Bonne chance
-
J'ai testé et cela fonctionne.
Merci