Ergon : les commandes de transfert mfget et mfput

Les commandes mfget et mfput ont été développées à l'IDRIS pour sécuriser les transferts entre les machines de calcul de l'Institut et le serveur d'archives Ergon et pour optimiser leur vitesse. Voici quelques exemples d’utilisation basique depuis une machine de calcul :

  • En interactif :
    • Recopie du fichier fic_ergon depuis Ergon vers la machine de calcul sous le nom fic_calcul :
      $ mfget fic_ergon fic_calcul
    • Recopie du fichier fic_calcul de la machine de calcul vers Ergon sous le nom fic_ergon :
      $ mfput fic_calcul fic_ergon
  • En batch, il est recommandé d'utiliser la classe archive pour réaliser les transferts de fichiers entre les machines de calcul et le serveur d'archives Ergon : cette classe dédiée n'a pas de limite en temps.
    • exemple d'utilisation en batch sur Ada ou Turing de la commande mfget dans la classe archive :
 
...           
# @ job_type = serial
# @ class = archive
...
# @ queue
       
# Copie du fichier d1 depuis le $HOME d'Ergon dans le $WORKDIR de la machine de calcul       
mfget d1 $WORKDIR        

# Copie du fichier donnee2 depuis le $HOME d'Ergon dans le $WORKDIR de la machine de calcul sous le nom d2       
mfget donnee2 $WORKDIR/d2        

# Copie du fichier donnee3 depuis le le sous-répertoire SOUS_REP du $HOME d'Ergon
# dans le $WORKDIR de la machine de calcul sous le nom d3       
mfget SOUS_REP/donnee3 $WORKDIR/d3        
  • exemple d'utilisation en batch sur Ada ou Turing de la commande mfput dans la classe archive :
...
# @ job_type = serial
# @ class = archive
... 
# @ queue

cd $WORKDIR       

# Copie du fichier resultat1 de la machine de calcul vers le $HOME de Ergon
mfput resultat1
        
# Copie du fichier resultat2 de la machine de calcul vers le sous-répertoire SOUS_REP du $HOME de Ergon sous le nom r2       
mfput resultat2 SOUS_REP/r2        
...

Remarques

  • le HOME des machines de calcul ayant un nom différent de celui d'Ergon, il ne faut surtout pas coder :
$ mfget $HOME/sous_rep/fich_ergon
  
$ mfput fich_result $HOME/sous_rep/fich_ergon

mais plutôt :

$ mfget sous_rep/fich_ergon
  
$ mfput fich_result sous_rep/fich_ergon
  • un cas d'échec : le shell bavard.
    Si votre shell de login sur Ergon est le bash ou le tcsh et qu'une sortie à l'écran est générée lors de l'exécution de vos fichiers d'environnement (.bashrc, ou .tcshrc), alors le transfert échoue. La solution consiste à modifier vos fichiers d'environnement pour les rendre muets de la manière suivante :
    • Dans un fichier .tcshrc :
      if ( { tty -s } ) then 
      # Exécuté seulement si on est dans une session interactive 
        echo "message" 
      endif
    • Dans un fichier .bashrc :
      if $(tty -s)
      then 
      # Exécuté seulement si on est dans une session interactive
        echo "message" 
      fi 
  • Il est préférable de rassembler un grand nombre de fichiers via la commande tar avant de transférer l'unique fichier d'archive créé : on obtient le transfert efficace d'un gros fichier (quelques Go) au lieu d'une multitude de petits.
  • Dans la mesure où le temps elapsed est facturé, pour des transferts significatifs il est conseillé d'utiliser la classe “archive” dédiée dans un job multi-steps.
  • En cas de problème réseau entre la machine de calcul et Ergon, le transfert est relancé automatiquement trois fois.
  • En cas d'échec complet du transfert à partir du $TMPDIR, un message d'erreur indique l'endroit où les fichiers non transférés ont été recopiés, où vous pourrez les récupérer.

Pour avoir plus de renseignements sur les options et capacités de transfert de ces commandes, nous vous conseillons de consulter leurs manuels en ligne sur les serveurs de calcul (man mfget, man mfput).

Transfert entre deux comptes utilisateurs différents

Par défaut, le nom d'utilisateur (login) distant sur Ergon utilisé par les commandes mfget/mfput est le même que le nom d'utilisateur local sur la machine de calcul. Les commandes vont donc rechercher ou déposer les fichiers dans le HOME de l'utilisateur sur Ergon. Pour modifier ce comportement et récupérer/copier un fichier dans le HOME d'un autre utilisateur sur Ergon, il vous suffit d'indiquer le chemin d'accès complet du fichier. Bien sûr, il est indispensable que les droits d'accès UNIX et/ou ACL soient correctement positionnés sur les deux répertoires pour que les accès en lecture et/ou écriture soient possibles.
Par exemple, avec la commande mfget suivante, l'utilisateur login_1 va rechercher dans le HOME de login_2 sur Ergon le fichier rep_login_2_ergon/fich_ergon pour le recopier sur la machine de calcul dans son propre WORKDIR :

$ mfget /path/to/home/login_2/rep_login_2_ergon/fich_ergon $WORKDIR/fich_entree_calcul