Réassemblage de fichiers

Composants

sr_watch: Vous pouvez utiliser sr3_watch pour surveiller un répertoire pour les fichiers de partition entrants (.Part) de sr_subscribe ou sr_sender, les deux ont la possibilité d’envoyer un fichier dans des partitions. Dans le fichier de configuration pour sr3_watch les paramètres importants à inclure sont les suivants :

  • chemin <chemin du répertoire à surveiller>
    • on_part /usr/lib/python3/dist-packages/sarra/plugins/part_file_assemble.py

    • accept *.Part

    • accept_unmatch False # Fait qu’il ne fait qu’acccepter le modèle ci-dessus

Part_File_Assemble (plugin): Ce plugin est un plugin on_part qui déclenche le code assembleur dans sr_file

sr_file: Contient le code de réassemblage… L’algorithme est décrit ci-dessous

Algorithme

Après avoir été déclenché par un fichier de pièce téléchargé :

  • si le target_file n’existe pas :

    • si le fichier de pièce téléchargé était la première partition (partie 0) :

      • créer un nouveau target_file vide

  • trouver quel numéro de partition doit être inséré ensuite (i)

  • while i < Nombre total de blocs:

    • file_insert_part()

      • insère la part du fichier dans le fichier cible et calcule la somme de contrôle de la partie insérée

    • vérifier l’insertion en comparant les sommes de contrôle du fichier de partition et du bloc inséré dans le fichier

    • supprimer le fichier si vous êtes d’accord, sinon réessayer

    • déclencher on_file

Test

Créer un fichier de configuration sr3_watch selon le modèle ci-dessus. Démarrez le processus en tapant la commande suivante : `sr_watch foreground path/to/config_file.cfg`

Ensuite, créez un fichier de configuration d’abonné et incluez `inplace off` afin que le fichier soit téléchargé en plusieurs parties. Démarrez l’abonné en tapant `sr_subscribe foreground path/to/config_file.cfg`

Maintenant, vous devez envoyer des messages de publication du fichier pour l’abonné, par exemple: `./sr_post.py -pb amqp://tsource@localhost/ -pbu sftp://<user>@localhost/ -p /home/<user>/test_file -px xs_tsource  --blocksize 12M`