Projet

Général

Profil

ICommands


Utilisation sur curta

L'utilisation de la solution se fait par l'intermédiaire de commande en ligne baptisé iCommands.
Ces iCommands sont accessibles sur curta à travers un module d'environnement (irods/4.2.10). En plus de donner accès aux commandes le module permet d'initialiser l'environnement de l'utilisateur afin de lui permettre d'utiliser l'infrastructure MCIA-iRODS.

Voici comment utiliser l'interface en ligne de commande:
Charger le module irods.
Il sera créé avec votre accord:

  • l'environnement pour utiliser l'iRODS du mésocentre
  • la création d'un mot de passe propre à iRODS (obligatoire pour utiliser iRODS par la suite)

Pour la première utilisation (et la première fois seulement), il faut initialiser son environnement via la commande iinit.

Utiliser le module associé

$ module load irods/4.2.10

1ère Etape : initialisation

A la première utilisation, il faut initialiser les paramètres avec la commande iinit ; une fois renseigné, ces paramètres de connexion seront ensuite stockés dans le fichier irods_environment.json.

  • irods_user_name : Nom d'utilisateur (identique à curta)
  • irods_host : Le serveur central de la solution iRODS à utiliser (icat1.mcia.fr pour le MCIA)
  • irods_port : Port réseau (TCP) de la solution (1247 par défaut)
  • irods_zone_name : Zone iRODS à utiliser ("MCIA")
$ iinit
One or more fields in your iRODS environment file (irods_environment.json) are
missing; please enter them.
Enter the host name (DNS) of the server to connect to: icat1.mcia.fr
Enter the port number: 1247
Enter your irods user name: [yourlogin]
Enter your irods zone: MCIA
Those values will be added to your environment file (for use by
other iCommands) if the login succeeds.

Enter your current iRODS password:
$ cat .irods/irods_environment.json
{
    "irods_host": "icat1.mcia.fr",
    "irods_port": 1247,
    "irods_user_name": "[yourlogin]",
    "irods_zone_name": "MCIA"
}

Utilisation des commandes

Les commandes iRODS ( iCommands ) sont toutes auto-documentées (option -h). Par exemple:

$ ils -h
Usage : ils [-ArlLv] dataObj|collection ... 
Usage : ils --bundle [-r] dataObj|collection ... 
Display data Objects and collections stored in irods.
Options are:
 -A  ACL (access control list) and inheritance format
 -l  long format
 -L  very long format
 -r  recursive - show subcollections
 -t  ticket - use a read (or write) ticket to access collection information
 -v  verbose
 -V  Very verbose
 -h  this help
 --bundle - list the subfiles in the bundle file (usually stored in the
     /myZone/bundle collection) created by iphybun command.

La page web des iCommands se trouve ici: https://docs.irods.org/master/icommands/user/

Commandes de type Unix

ipasswd : Permet le changement du mot de passe iRODS. L'ancien mot de passe iRODS est préalablement demandé pour vérification.
  • Usage $ ipasswd [-hvVl]
ils : Liste le contenu d'un répertoire logique (une "collection")
  • Usage : $ ils [-ArlLv] dataObj|collection ... # ou $ils --bundle [-r] dataObj|collection ...

On notera les très utiles options -l et -L qui donnent un listing détaillé (avec la liste des répliques des fichiers pour -L).

imkdir
icd
ipwd
imv
icp

Attention cette commande ne sert que pour copier des données déjà présentes sur iRODS d'un site vers un autre ou d'un dossier vers un autre. Pour copier des données vers iRODS depuis un serveur distant utiliser la commande iput ou irsync

ichmod

Permet de gérer des listes de contrôle d'accès pour vos fichiers et répertoires iRODS (DataObject et Collection).

La forme générale de la Commande est:

ichmod null|read|write|own user|group dataObj|Collection

Les trois types de permission sont:

  • read: accès en lecture
  • write: accès lecture/écriture
  • own: lecture/écriture/suppression ainsi que possibilité d'ajouter des permissions (avec ichmod)

null permet de supprimer toute permission

Pour plus d'informations:

ichmod -h

Commandes de type ftp

Note importante : dans certains contextes, il arrive que les iCommandes (iget,iput,irsync, ...) fassent des erreurs bizarres et ne fonctionnent pas. Dans ce cas, il faut ajouter l'option '-N 0' (ex: iget -N 0 monFichier ) pour désactiver le traitement parallèle, ce qui en pratique ne semble pas nuire aux performances. Nous investiguons pour essayer de régler ce problème.

iput
$ iput [-abfIkKPQrtTUvV] [-D dataType] [-N numThreads] [-n replNum]
             [-p physicalPath] [-R resource] [-X restartFile] [--link]
             [--lfrestart lfRestartFile] [--retries count] [--wlock]
             [--purgec]
               localSrcFile|localSrcDir ...  destDataObj|destColl
$ iput [-abfIkKPQtTUvV] [-D dataType] [-N numThreads] [-n replNum] 
             [-p physicalPath] [-R resource] [-X restartFile] [--link]
             [--lfrestart lfRestartFile] [--retries count] [--wlock]
             [--purgec]
               localSrcFile

Transfère un plusieurs fichiers locaux dans iRODS. Cette commande est très puissante et très configurable, mais attention aux options dangereuses ("-f", par exemple).

L'option -P est particulièrement intéressante pour suivre la progression du transfert.

iget
$ iget [-fIKPQrUvVT] [-n replNumber] [-N numThreads] [-X restartFile]
    [-R resource] [--lfrestart lfRestartFile] [--retries count] [--purgec]
    [--rlock]  srcDataObj|srcCollection ... destLocalFile|destLocalDir

$ iget [-fIKPQUvVT] [-n replNumber] [-N numThreads] [-X restartFile]
    [-R resource] [--lfrestart lfRestartFile] [--retries count] [--purgec]
    [--rlock]  srcDataObj|srcCollection

$ iget IKPQUvVT] [-n replNumber] [-N numThreads] [-X restartFile]
    [-R resource] [--lfrestart lfRestartFile]  [--retries count]  [--purgec]
    [--rlock]  srcDataObj ... -

Transfère un ou plusieurs fichiers depuis iRODS vers l'ordinateur local.

L'option -P est particulièrement intéressante pour suivre la progression du transfert.

Commandes sur les métadonnées

imeta
Usage: imeta [-vVhz] [command]
 -v verbose
 -V Very verbose
 -z Zonename  work with the specified Zone
 -h This help
Commands are:
 add -d|C|R|G|u Name AttName AttValue [AttUnits] (Add new AVU triplet)
 addw -d Name AttName AttValue [AttUnits] (Add new AVU triplet
                                           using Wildcards in Name)
 rm  -d|C|R|G|u Name AttName AttValue [AttUnits] (Remove AVU)
 rmw -d|C|R|G|u Name AttName AttValue [AttUnits] (Remove AVU, use Wildcards)
 mod -d|C|R|G|u Name AttName AttValue [AttUnits] [n:Name] [v:Value] [u:Units]
      (modify AVU; new name (n:), value(v:), and/or units(u:)
 set -d|C|R|G|u Name AttName newValue [newUnits] (Assign a single value)
 ls  -[l]d|C|R|G|u Name [AttName] (List existing AVUs for item Name)
 lsw -[l]d|C|R|G|u Name [AttName] (List existing AVUs, use Wildcards)
 qu -d|C|R|G|u AttName Op AttVal [...] (Query objects with matching AVUs)
 cp -d|C|R|G|u -d|C|R|G|u Name1 Name2 (Copy AVUs from item Name1 to Name2)
 upper (Toggle between upper case mode for queries (qu)

Manipulation des métadonnées.

Les options -d|C permettent d'agir notamment sur les métadonnées de fichiers (-d), de collection (-C). (-R|G|u concernent les métadonnées de ressource, ResourceGroups et utilisateurs, mais ce n'est pas accessible aux simples utilisateurs).

Les métadonnées suivent un format AVU (Attribute, Value, Unit). Les unités sont facultatives.

Les sous-commandes suivantes seront le plus souvent utilisées:
add ajoute une métadonnée. On peut ajouter plusieurs métadonnées ayant le même nom (mais pas la même valeur)
mod modifie une métadonnée existante
set positionne une métadonnée à une certaine valeur. Attention, utiliser set sur un objet ayant plusieurs métadonnées ayant le même nom efface toutes les valeurs.
ls liste les métadonnées associées à un objet
rm supprime une métadonnée
qu sélectionne les objets selon une condition sur une métadonnée. Par exemple:

imeta qu -d somemeta = thirdvalue