Splitte un gros fichier et déposer sur FTP toutes les 15 mn

Résolu
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

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.


A voir également:

2 réponses

mamiemando Messages postés 33730 Date d'inscription   Statut Modérateur Dernière intervention   7 869
 

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)
done

Ceci je pense devrais aussi regarder du côté de logrotate.

Bonne chance

1
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 

J'ai testé et cela fonctionne.

Merci


0