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

Résolu
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - Modifié le 21 sept. 2023 à 16:06
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 26 sept. 2023 à 09:01

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 33113 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 mai 2024 7 753
21 sept. 2023 à 16:14

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 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
Modifié le 26 sept. 2023 à 09:41

J'ai testé et cela fonctionne.

Merci


0