Forum Clubic

Monter une archive en tant que dossier

Bonjour,

J’ai un script qui génère des millions de tout petits fichiers sur une machine A. (de 4Go à 100Go de données en fichiers de 1 à 20ko …).
Et je dois les transférer sur une machine B.
Les machines sont sur le même réseau local donc pas de pb de ce coté la.

Le problème avec une telle masse de fichiers, ce sont bien sur les lecture/écriture disque.

Actuellement ma procédure est la suivante :
1 : générer les XGo de données.
2 : créer une archive tar du dossier (non compressée).
3 : supprimer les données.
4 : transférer l’archive sur le serveur B
5 : de-archiver les données.

C’est fonctionnel mais sûrement pas optimal… les étapes 2 et 3 sont très longues et coûteuse en IO.

Mon idée serait de générer directement les données dans une archive qui serait montée en tant que dossier inscriptible.
A la fin on démonte l’archive et on la transfère.

Pouvez vous me donner des pistes ou solutions pour mettre en oeuvre cette idée ?

Merci d’avance
Edité le 22/03/2011 à 17:28

Puisque tu décompresses sur le serveur B, pourquoi ne pas utiliser les logiciels de copie mirroir style rsync ??

J’ai essayé :wink:
Mais un rsync de ce genre de données (5Go en fichiers de 10ko) c’est infernal !!! :smiley:

Je suis en train de regarder a faire une partition virtuelle avec dd

Bon j’ai trouvé ça, cela semble bien
www.eauland.com…

Problème… je n’ai pas de droit root pour la machine A… ce qui empêche de faire un mke2fs et un mount … :’(
Pas d’accès a /etc/fstab non plus pour paramétrer une exception…
Edité le 22/03/2011 à 18:38

J’allais te proposer de faire carrement un dd effectivement. A mon avis, c’est la meilleure solution etant donné que tu ne compresses pas…

J’ai deja ete confronté a un probleme equivalent avec des centaines de milliers de minuscules fichiers a gerer. J’avais resolu ca en utilisant un serveur de stockage centralisé partagé en NFS. Ca fait un NAS quoi…
Je connais pas tes possibilités a ce niveau mais peut etre devrais tu envisager une solution de ce genre ?


[quote="murdoc_1_1"]

Problème… je n’ai pas de droit root pour la machine A… ce qui empêche de faire un mke2fs et un mount … :’(
Pas d’accès a /etc/fstab non plus pour paramétrer une exception…
[/quote]

Tu peux creer la partition “virtuelle” sur une autre machine et deplacer le fichier formé. Mais si tu peux pas faire de mount, ca craint :confused:

Et tu tar par ssh?

C’est le meme probleme… il ne cherche pas un moyen pour copier les datas mais un moyen pour eviter les etapes d’archivage/desarchivage (au moins desarchivage en tout cas) :neutre:

En effet je cherche un moyen d’éviter les étapes d’archivage / suppression.

Je cherche aussi du coté de l’étape 1.
C’est un programme python qui génère des millions de fichiers.
L’idéal serait de rediriger la sortie du programme directement dans une archive tar.
J’ai essayé avec des commandes du genre $> ./programme_python.py > tar rvf fichier_sortie.tar

la commande tar rvf permet d’ajouter un fichier à une archive, cependant ce type de redirection ne concerne que les messages affichés a l’écran et non les fichiers générés.
Edité le 23/03/2011 à 13:17

tes fichiers sont tous generés en une seule fois ?
Il vaudrait mieux utiliser un | plutot qu’un >
Et tu voudrais pas essayer de les concatener en un seul gros fichier texte ?

pourquoi ne pas écrire un programme indépendant chargé des transferts et de l’archivage ???

ton programme en python poste le nom du fichier généré dans un pipe .
Un programme avec un thread de lecture du pipe , et des threads de traitement
( ou un truc avec inotify ).

Merci à tous pour vos réponse.

Finalement j’ai modifié mon script python pour qu’il enregistre directement dans une archive.

Sinon avec des droits root, la solution avec dd est la plus simple :wink:

Ha oui je n’avais pas vu qu’il fallait supprimer les données sur la machine A.
Si c’est une tonne de petits fichiers ce sera loooong :frowning:

Finalement j’ai modifié mon script python pour qu’il enregistre directement dans une archive : C’est ce qu’il y avait de mieux à faire :slight_smile:

J’arrive à la bourre. Mais normalement un simple cp sur montage NFS ne va pas générer plus d’IO qu’un tar + copie + décompression.

Oui! J’avais supposé implicitement qu’on n’avait pas la possibilité de faire du nfs.